在 Elasticsearch 的布尔查询(bool query)中,must 和 filter 是两个核心子句,它们的核心区别在于 是否影响相关性评分,这直接决定了它们在查询性能、使用场景和结果排序上的差异。以下是详细对比:
一、核心区别

二、底层原理
1. must 子句
-
执行流程:
- 对每个文档执行查询条件
- 计算匹配条件的相关性评分(
_score) - 合并所有
must子句的评分(默认相加) - 按总分排序结果
- 典型应用:
{
"query": {
"bool": {
"must": [
{ "match": { "title": "elasticsearch" } }, // 全文搜索
{ "range": { "price": { "gte": 100 } } } // 范围条件(但需要影响排序)
]
}
}
}
2. filter 子句
-
执行流程:

最低0.47元/天 解锁文章
554

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



