Elasticsearch使用自定义排序规则时_score返回null问题咨询
现象原因说明
Elasticsearch 存在默认的性能优化逻辑:当查询指定了自定义sort排序规则时,会判断排序规则是否需要用到相关性得分_score,如果判定不需要,就会直接跳过得分计算步骤,因此返回结果的_score值为null。
相关规则整理
- 若自定义
sort数组中包含_score字段,或者没有配置自定义sort规则,ES会正常计算相关性得分,返回实际_score值 - 若自定义
sort数组中不包含_score字段,ES默认不会计算相关性得分,返回_score为null - 若你不需要用
_score排序,但仍需要获取相关性得分,可以在查询请求体中添加track_scores: true参数,强制ES执行得分计算
你的现有配置完全符合需求,将_score放在sort数组的最后一位,既实现了两个日期字段优先级高于相关性得分的排序逻辑,也触发了ES的得分计算逻辑,不需要额外配置其他参数。
内容的提问来源于stack exchange,提问作者loretoparisi
相关产品推荐
相关产品推荐

