一 minimum_should_match 参数是什么?
minimum_should_match :可以使用 minimum_should_match 参数来指定返回文档 必须(must) 匹配的should子句的数量或百分比。可以称他-最小匹配度
如果 bool 查询至少包含一个 should 子句,并且没有 must 或 filter 子句,则默认值为 1。 否则,默认值为 0。
二 minimum_should_match 如何使用?
minimum_should_match参数一般放到should叶子查询后。
bool 查询映射到 Lucene 的 BooleanQuery。 它使用一个或多个布尔子句构建,每个子句都有一个类型的出现。 出现的类型包括:
表格 | 描述 |
---|---|
must | 该子句(查询)必须出现在匹配的文档中,并且将参与计算得分。 |
filter | 该子句(查询)必须出现在匹配的文档中。 然而,与 must 不同,该查询的分数将被忽略。 filter 子句在 filter 的上下文中执行,这意味着该字句的评分会被忽略,但会考虑对该字句进行缓存。 |
should | 该子句(查询) 应该(should) 出现在匹配的文档中。 |
must_not | 该子句(查询)不能出现在匹配的文档中。 该子句在 filter 的上下文中执行,这意味着该字句的评分会被忽略,但会考虑对该字句进行缓存。 因为评分被忽略,所以所有文档都返回0分。 |
bool 查询采用匹配度(more-matches-is-better)的方法,因此每个匹配的 must 或 should 子句的分数将被加在一起,以提供每个文档的最终的_score。
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"term" : { "tag" : "tech" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},
"should" : [
{ "term" : { "tag" : "wow" } },
{ "term" : { "tag" : "elasticsearch" } }
],
"minimum_should_match" : 1,
"boost" : 1.0
}
}
}
3.为什么/什么场景需要加minimum_should_match这个参数?
- 可以使用 minimum_should_match 参数来指定返回文档 必须(must) 匹配的should子句的数量或百分比。
- minimum_should_match 参数取值说明:
类型 | 示例 | 描述 |
---|---|---|
整数 | 3 | 表示一个固定值,与可选子句的数量无关。 |
负整数 | -2 | 表示可选子句的总数,减去这个数目应该是强制性的。 |
百分比 | 75% | 表示可选子句总数的这个百分比是必需的。根据百分比计算出的数字被向下舍入并用作最小值。 |
负百分比 | -25% | 表示可选子句总数的这个百分比可以缺失。 从百分比中计算出的数字向下四舍五入,然后从总数中减去以确定最小值。 |
组合 | 3<90% | 一个正整数,后面跟小于号,再跟前面提到的任意一个说明符,这是一个条件规范。 它表示:如果可选子句的数量等于(或小于)整数,则它们都是必需的;但是如果可选子句的数量大于整数,则此规范适用。 在这个例子中:如果有 1 ~ 3 个子句,它们都是必需的,但是对于4个或更多个子句,只有90%是必需的。 |
多个组合 | 2<-25% 9<-3 | 多个条件规范可以用空格分隔,每个条件规范只对大于它前面的数字有效。 在这个例子中:如果有 1 ~ 2 个条款,两者都是必需的;如果有 3 ~ 9 个条款,除了 25% 都是必需的;如果有 9 个以上的条款,除了 3 都是必需的。 |
注意:
在处理百分比时,负值可用于在边缘(edge)情况下获得不同的行为。 在处理 4 个子句时,75% 和 -25% 的意思是一样的,但在处理 5 个子句时,75% 表示需要3个子句,而 -25% 表示需要 4 个子句。
如果基于规范的计算确定不需要可选子句,那么关于 bool 查询的常规规则在搜索时仍然适用(不包含必需子句的 bool 查询仍然必须匹配至少一个可选子句)文章来源:https://www.toymoban.com/news/detail-826733.html
无论计算结果是多少,都不会使用大于可选子句数的值或小于1的值。 (即:无论计算结果的结果有多低或多高,要求的最小匹配数永远不会低于1或大于子句数。)文章来源地址https://www.toymoban.com/news/detail-826733.html
到了这里,关于ElasticSearch minimum_should_match 参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!