如何查询完全匹配field1和非空field2匹配的Elasticsearch文档

时间:2018-11-28 04:09:02

标签: elasticsearch

我在Elasticsearch中有一些文档,其中field1映射到整数值,field2映射到数组。我想创建一个查询来查找所有field1 == 100并且field2不为空的文档。

如何编写这样的查询?

1 个答案:

答案 0 :(得分:3)

使用term queryfield1匹配为值100,然后使用exists query检查field2是否存在(不为空)。以上两个条件都是AND,因此将它们包装在bool querymust子句中。

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "field1": 100
          }
        },
        {
          "exists": {
            "field": "field2"
          }
        }
      ]
    }
  }
}

根据@Val的评论进行更新:

{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "field1": 100
          }
        },
        {
          "exists": {
            "field": "field2"
          }
        }
      ]
    }
  }
}