Elasticsearch存在过滤器如何将空字符串作为空值?

时间:2016-04-22 08:34:21

标签: python elasticsearch

我尝试将名称字段索引到elasticsearch,名称可能是字符串或空字符串(""),我想搜索包含空值的所有名称,所以我使用{{1 }}} filter,但对于exists过滤器,空值不是空值。

https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-exists-filter.html

查询dsl:

exists

如何将空字符串作为elasticsearch { "filter" : { "exists" : { "field" : "name" } } } 过滤器的空值?任何人都有好主意?

2 个答案:

答案 0 :(得分:1)

术语过滤器应该完成这项工作:

    {
      "term": {
        "name": ""
      }
    }

只是尝试了一些我的数据并得到了结果,但可能取决于你的字段是否“未经分析”(如我的)或不是。

更新:刚刚发现这个类似的问题有更详细的答案:Find documents with empty string value on elasticsearch

答案 1 :(得分:0)

您可以尝试使用script过滤器进行搜索,以测试字符串的长度

{
  "query": {
    "script": {
      "script": "doc.name.value?.size() == 0"
    }
  }
}