ElasticSearch/Lucene 查询字符串 — select "field X exists"

ElasticSearch/Lucene query string — select "field X exists"

如何通过 Kibana 向 ElasticSearch 查询 select 个具有字段 X 的项目?

例如,我有一个包含字段 {"a": {"type": "string"}, "b": {"type": "string"}} 和两个文档的映射

{"a": "lalala"}
{"a": "enoheo", "b": "nthtnhnt"}

我想在不知道它 b 实际是什么的情况下找到第二个文档。

使用exists filter,如:

POST /test_index/_search
{
    "filter": {
        "exists": {
           "field": "b"
        }
    }
}

编辑: 如果您需要 Lucene 查询字符串查询,应该这样做:

POST /test_index/_search
{
   "query": {
      "query_string": {
         "query": "b:*"
      }
   }
}

这是我用来测试它的一些代码:

http://sense.qbox.io/gist/ad336a0888a279bfdace03e217bf1915adbf0fe2

自从给出这些答案以来已经有一段时间了。如果有人需要更新的答案,文档现在给出了这个示例来选择具有特定字段的结果。

在 query-string 语法中:

where the field title has any non-null value:

_exists_:title

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_field_names