我尝试将名称字段索引到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" }
}
}
过滤器的空值?任何人都有好主意?
答案 0 :(得分:1)
术语过滤器应该完成这项工作:
{
"term": {
"name": ""
}
}
只是尝试了一些我的数据并得到了结果,但可能取决于你的字段是否“未经分析”(如我的)或不是。
更新:刚刚发现这个类似的问题有更详细的答案:Find documents with empty string value on elasticsearch
答案 1 :(得分:0)
您可以尝试使用script
过滤器进行搜索,以测试字符串的长度
{
"query": {
"script": {
"script": "doc.name.value?.size() == 0"
}
}
}