大家好,我是陆砚码,今天我们来聊聊ElasticSearch中那些让人头疼的must、must_not、should组合关系。你是不是也遇到过,明明写了should条件,结果却只展示了must的结果?别急,今天我们就来一探究竟。
一、概念先搞懂
首先,我们来回顾一下这几个概念:
- must:相当于数学中的交集,所有条件都必须满足。
- must_not:相当于数学中的差集,满足其中一个条件的数据就不被选择。
- should:相当于数学中的并集,满足其中一个条件的数据就会被选择。
二、组合关系大揭秘
接下来,我们来看看这些组合关系:
- 多个must组合:求交集。
- 多个must_not组合:全部数据减去命中must_not的数据集。
- 多个should组合:求并集。
- must和must_not组合:满足must的数据减去满足must_not的数据。
- must和should组合:满足must的数据,should用来打分,影响返回排序。
- should和must_not组合:满足should的数据减去满足must_not的数据。
- must、should和must_not组合:满足must的数据减去满足must_not的数据,should用来打分,影响返回排序。
三、实验验证
下面我们通过一些实验来验证这些组合关系。
(实验部分代码与原文一致,此处省略)
通过实验,我们可以看到不同的组合关系会产生不同的结果。
四、小结与拓展
今天我们学习了ElasticSearch中must、must_not、should的组合关系,希望对大家有所帮助。如果你还有其他问题,欢迎在评论区留言讨论。我是陆砚码,我们下期再见!
想了解更多编程知识,请关注「思享编程网」(www.sxgpb.com)。
