问题
在Elasticsearch中,当我们将must和should同级使用的时候,我们就会发现should失效了。文章来源:https://www.toymoban.com/news/detail-523233.html
分析原因
首先,当我们直接使用should的时候,参数minimum_should_match默认为1,此时我们使用should是可以正常返回结果的。
但是当我们将must和should同级使用的时候,此时minimum_should_match参数变为了0,也就是即使一个也没有匹配也是会有结果返回的,此时should就失效了。
这是因为must的作用就是要求所有的条件都满足,而should只是一个可选的条件。文章来源地址https://www.toymoban.com/news/detail-523233.html
解决方案
- 如果想让should中至少一个条件生效,只需要手动配置mini_should_match为1即可
- 将should通过bool语句嵌到must里面,以避免should和must同级使用
- 在Java代码中,还可以通过must配合termsQuerys来达到should的效果。
到了这里,关于Elasticsearch中should失效的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!