过滤Elaticsearch查询是否存在嵌套字段

时间:2016-09-07 13:00:50

标签: elasticsearch

我正在尝试编写一个Elasticsearch查询,该查询将返回具有嵌套字段的元素。但是,我显然遇到了很多困难。我对该字段的映射通常如下所示:

{ "myType": { "properties": { "hello": { "type": "nested", "properties": { "foo": {"type": "string", "index": "not_analyzed"}, "bar": {"type": "string", "index": "not_analyzed"}, } } } } }

我的查询一般如下: { "query": { "filtered": { "filter": { "exists": { "field": "hello.foo" } } } } }

即使我知道有匹配的文档,此查询也会返回0个匹配的文档。

我还尝试在exists查询中使用nested查询,但收到的错误消息是nested查询不支持exists查询。

我正在对Elasticsearch 2.3进行测试。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

我希望这会有所帮助

{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "hello",
            "filter": {
              "term": {       // replace term to "match" in case of fulltext 
                "hello.foo": "value to be searched"
              }
            }
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 50
}