企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Dis Max 查询 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl-dis-max-query.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl-dis-max-query.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4882902](http://www.apache.wiki/pages/viewpage.action?pageId=4882902) 贡献者 : [蓝色飞扬](/display/~lixiaoqing) [<< Bool Query ](http://www.apache.wiki/pages/viewpage.action?pageId=4882896)                                                                                                                      [Function Score Query >>](http://www.apache.wiki/pages/viewpage.action?pageId=4882904) * * * ## Dis Max Query 此查询生成由其子查询生成的文档的并集,并为每个文档分配由任意子查询生成的该文档的最大分数,以及任何其他匹配子查询的分数增量即 **tie breaking** 属性。 当在具有不同增压因子的多个字段中搜索字词(使得字段不能等价地组合到单个搜索字段中)时,这是有用的。我们希望主分数是与最高提升相关联的分数,而不是字段分数的总和(如布尔查询将给出的)。如果查询是“albino elephant”,这确保匹配一个字段的“albino”和匹配另一个字段的“elephant”得到比匹配两个字段的“albino”更高的分数。为了得到这个结果,使用 **Boolean Query** 和 **DisjunctionMax Query** :在**DisjunctionMaxQuery** 的每个字段中搜索每个术语,而这些 **DisjunctionMaxQuery** 的集合组合成一个 **BooleanQuery** 。 **tie breaker** 属性允许将会使多个字段中包括相同条款的结果,比仅在多个字段中的最佳字段里包括该条款的结果更好地判断,而不会将其与多个字段中的两个不同条款的 **better case** 相混淆。默认**_tie_breaker_** 为0.0 。 该查询映射到 **Lucene** 的 **DisjunctionMaxQuery** 。 ``` GET /_search { "query": { "dis_max" : { "tie_breaker" : 0.7, "boost" : 1.2, "queries" : [ { "term" : { "age" : 34 } }, { "term" : { "age" : 35 } } ] } } } ``` * * * [<< Bool Query](http://www.apache.wiki/pages/viewpage.action?pageId=4882896)                                                                                                                       [Function Score Query >>](http://www.apache.wiki/pages/viewpage.action?pageId=4882904)