弹性搜索查询以检查2个字段中的空值

时间:2017-03-31 04:02:44

标签: elasticsearch notnull

用于搜索“field1为空 OR field2为空”的文档的弹性搜索查询是什么。

我正在使用elasticSearch 5.3 ......

2 个答案:

答案 0 :(得分:4)

此查询对我有用:

curl -XGET "http://localhost:9200/my_null_val/_search?pretty" -d '
{
  "query": {
    "bool":{
      "must_not":{
        "bool": {
          "must": [
            {"exists" : { "field" : "field1" }},
            {"exists" : { "field" : "field2" }}
          ]
        }
      }
    }
  }
}'

作为提示,您可以将field1 is null **OR** field2 is null视为与NOT (field1 is not null **AND** field2 is not null)等效的表达。

它也被称为De_Morgan's law

答案 1 :(得分:1)

您还可以在should过滤器中使用bool条款。

    "bool": {
      "should": [{
        "bool": {
          "must_not": {
            "exists": {
              "field": "field1"
            }
          }
        }
      }, {
        "bool": {
          "must_not": {
            "exists": {
              "field": "field2"
            }
          }
        }
      }]
    }