我正在针对索引运行任何空列表的should
查询。我期望它返回0结果,因为没有should
个查询/过滤器可以匹配:
(语法是耐嚼但非常接近常规ES)
OrganizationsIndex.filter(
bool: {
must: [
{
bool: {
should: [],
minimum_should_match: 1
}
}
]
})
但是,它会返回索引中的所有文档。这是预期的行为吗?有没有办法让should: []
总是返回0个文件?
答案 0 :(得分:0)
此行为在Elasticsearch的 1.3.3 版本中已更改。之前,将空的should子句视为不匹配,之后由@Val提及它成为match_all
查询。
关于这个问题的讨论:
当一个只有bool {}的查询自己运行时,空bool 在这种情况下,子句不会抛出NPE并被视为有效 查询,除了它不返回任何文件(当它应该是真的 返回match_all):
此GitHub问题的链接 - https://github.com/elastic/elasticsearch/issues/7240