Elastic Search存在查询的另一种方式

时间:2018-06-20 10:18:21

标签: elasticsearch elasticsearch-5

我正在使用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字符串和空值的文档。因此,我不能只使用一种技巧来在其他任何一种情况下使用它。

我在这里错过了什么吗?我使用方式有误吗?因为这让我很困惑。 我能做些什么以获得预期的结果?

0 个答案:

没有答案