Elasticsearch 二次评分(Rescore):优化顶部结果相关性
在 Elasticsearch 中,当基础查询返回的顶部文档相关性不够理想时,可通过二次评分(Rescore) 机制对前 N 个文档重新计算得分,进一步优化排序。这种方式既能保证查询效率(仅处理顶部文档),又能提升关键结果的准确性,适用于需要精细调整排序的场景(如搜索引擎结果页 Top 10 优化)。
二次评分的核心原理
二次评分的工作流程如下:
- 基础查询:执行初始查询(如
match、bool),获取匹配文档并按得分排序。 - 筛选顶部文档:从每个分片的结果中选取前
window_size个文档(默认取from + size个)。 - 重新评分:对这些顶部文档应用二次评分查询(如
function_score、script_score),计算新得分。 - 合并结果:根据配置的评分模式(如求和、相乘)合并原始得分与二次评分,得到最终排序。
基础语法与示例
基本结构
1 | GET index/_search |
得分计算逻辑
最终得分由原始查询得分和二次评分按权重合并: