我试图将名称字段索引到 elasticsearch,名称可能是字符串或空字符串( ""
),我想搜索所有包含空值的名称,所以我使用 exists
过滤器,但对于exists
过滤器,空值不是空值。
https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-exists-filter.html
查询 DSL:
{ "filter" : {
"exists" : { "field" : "name" }
}
}
如何将空字符串设置为弹性搜索exist
过滤器的空值?有人有好主意吗?
术语过滤器应该完成这项工作:
{
"term": {
"name": ""
}
}
刚刚尝试了我的一些数据并得到了结果,但可能取决于您的字段是否"未分析"(如我的)或否。
更新:刚刚找到了这个类似的问题,它有一个更详细的答案:在 elasticsearch 上查找具有空字符串值的文档
您可以尝试使用 script
筛选器进行搜索,以测试字符串的长度
{
"query": {
"script": {
"script": "doc.name.value?.size() == 0"
}
}
}