Elasticsearch 中组合使用 `must` 和 `should` 的注意事项
在 Elasticsearch 的布尔查询(Bool Query)中,`must` 和 `should` 子句的组合使用需要特别注意以下几个关键点:
1. 默认评分行为
没有 `must` 只有 `should`:默认至少需要匹配一个 `should` 条件,可通过 `minimum_should_match` 参数调整
同时有 `must` 和 `should`:`should` 条件变为完全可选,不要求必须匹配任何 `should` 条件,除非显式设置 `minimum_should_match`
2. minimum_should_match 参数
这是组合使用时最重要的控制参数:
{
"query": {
"bool": {
"must": [...],
"should": [...],
"minimum_should_match": 1 // 显式要求至少匹配1个should条件
}
}
}
3. 相关性评分影响
`must` 条件:必须满足,但不直接影响文档的评分
`should` 条件:可选满足,但匹配的 `should` 子句会增加文档的相关性评分
4. 实际使用注意事项
1. 明确查询意图:
- 如果所有条件

最低0.47元/天 解锁文章
4540

被折叠的 条评论
为什么被折叠?



