0

我正在should对索引运行任何空列表的查询。我希望它返回 0 个结果,因为没有should要匹配的查询/过滤器:

(语法很耐嚼,但非常接近常规 ES)

OrganizationsIndex.filter(
   bool: {
     must: [
       {
         bool: {
           should: [],
    minimum_should_match: 1
         }
       }
     ]
   })

但是,它会返回索引中的所有文档。这是预期的行为吗?有没有办法让我should: []总是返回 0 个文档?

4

1 回答 1

0

此行为在1.3.3版本的 Elasticsearch 中进行了更改。之前,空的 should 子句被视为不匹配,之后正如@Val 提到的那样,它变成了match_all查询。

从关于这个问题的讨论中:

当仅带有 bool {} 的查询自行运行时,在这种情况下,空 bool 子句不会抛出 NPE 并被视为有效查询,除了它不返回任何文档(当它真的应该返回 match_all ):

此 GitHub 问题的链接 - https://github.com/elastic/elasticsearch/issues/7240

于 2018-03-29T07:57:42.570 回答