弹性搜索空白`应该'返回结果

时间:2018-03-27 21:47:16

标签: elasticsearch chewy-gem

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

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

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

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

1 个答案:

答案 0 :(得分:0)

此行为在Elasticsearch的 1.3.3 版本中已更改。之前,将空的should子句视为不匹配,之后由@Val提及它成为match_all查询。

关于这个问题的讨论:

  

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

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