Elasticsearch 6.2 / Kibana查询:必须存在一个字段而不得存在一个字段

时间:2018-06-22 22:14:14

标签: elasticsearch lucene kibana exists not-exists

我的愿望是搜索field_a存在而field_b不存在的文档。 有没有一种方法可以使用Kibana中的Lucene查询语法(Kibana的Discover部分中的Search字段)。

我尝试使用 _missing_:field_b 失败( _exists _ 有效)。

我已经找到了,但是并没有太大帮助:

GET /_search
{
    "query": {
        "bool": {
            "must_not": {
                "exists": {
                    "field": "user"
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

对于Lucene搜索语法:

_exists_:field_a AND !_exists_:field_b

对于Elasticsearch搜索语法:

{
 "query" : {
  "bool" : {
   "must" : [
     {"exists" : { "field" : "field_a" }}
   ],
   "must_not": [
     {"exists" : { "field" : "field_b" }}
   ]
  }
 }
}