我正在使用5.6.1版的弹性搜索,并且弹性搜索中的exists
查询存在问题。
说我有一个看起来像这样的文件:
{
"id": 5,
"title": "Something",
"svg": "<svg xmlns=...</svg>"
}
我希望查询svg字段是否存在的查询将返回此文档:
{
"query": {
"bool": {
"must": {"exists": {"field": "svg"}}
}
}
}
但事实并非如此。
尽管确实会返回值为"svg": ""
的文档,这是预期的行为。
以下查询确实返回了文档,这对我来说似乎是一个颠倒的世界。
{
"query": {
"bool": {
"must_not": {"exists": {"field": "svg"}}
}
}
}
尽管这确实返回了svg字段中值为null
的文档。
因此,第一个查询返回svg字段中带有空字符串的文档,第二个查询返回具有有效svg字符串和空值的文档。因此,我不能只使用一种技巧来在其他任何一种情况下使用它。
我在这里错过了什么吗?我使用方式有误吗?因为这让我很困惑。 我能做些什么以获得预期的结果?