弹性搜索空白“应该”返回结果
Elastic Search blank `should` returning results
我是 运行 should
查询,其中包含针对索引的任何空列表。我期待它 return 0 个结果,因为没有 should
queries/filters 可以匹配:
(语法有嚼劲但非常接近常规 ES)
OrganizationsIndex.filter(
bool: {
must: [
{
bool: {
should: [],
minimum_should_match: 1
}
}
]
})
但是,它 returns 索引中的所有文档。这是预期的行为吗?有没有办法让 should: []
总是 return 0 个文档?
此行为已在 1.3.3 版本的 Elasticsearch 中更改。之前,空的 should 子句被视为不匹配,之后正如@Val 提到的那样,它变成了 match_all
查询。
来自对该问题的讨论:
When a query with just a bool {} is run on its own, the empty bool
clause in this case does not throw a NPE and is treated as a valid
query, except that it returns no documents (when it should really be
returning a match_all):
这个GitHub问题的link - https://github.com/elastic/elasticsearch/issues/7240
我是 运行 should
查询,其中包含针对索引的任何空列表。我期待它 return 0 个结果,因为没有 should
queries/filters 可以匹配:
(语法有嚼劲但非常接近常规 ES)
OrganizationsIndex.filter(
bool: {
must: [
{
bool: {
should: [],
minimum_should_match: 1
}
}
]
})
但是,它 returns 索引中的所有文档。这是预期的行为吗?有没有办法让 should: []
总是 return 0 个文档?
此行为已在 1.3.3 版本的 Elasticsearch 中更改。之前,空的 should 子句被视为不匹配,之后正如@Val 提到的那样,它变成了 match_all
查询。
来自对该问题的讨论:
When a query with just a bool {} is run on its own, the empty bool clause in this case does not throw a NPE and is treated as a valid query, except that it returns no documents (when it should really be returning a match_all):
这个GitHub问题的link - https://github.com/elastic/elasticsearch/issues/7240