ElasticSearch / Lucene查询字符串 - 选择“字段X存在”

时间:2015-05-13 13:53:04

标签: elasticsearch lucene kibana

如何通过Kibana查询ElasticSearch以选择具有字段X的项目?

例如,我有一个带有字段{"a": {"type": "string"}, "b": {"type": "string"}}的映射,以及两个文档

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

我想找到第二个文档而不知道其b究竟是什么。

2 个答案:

答案 0 :(得分:5)

使用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

答案 1 :(得分:3)

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

以查询字符串语法:

其中字段title具有任何非空值:

_exists_:title

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