如何在OpenSearch中保留默认得分排序并设置二级排序规则?
在OpenSearch中保留相关性得分排序并添加二级排序条件
直接在sort参数的数组里把_score作为第一个排序规则,后面跟上你的二级排序字段即可,完全不需要关闭默认的相关性排序逻辑。
举个实际请求的例子,假设你想先按相关性得分降序排列,得分相同的文档再按create_time字段降序排序:
{ "query": { "match": { "content": "你的搜索关键词" } }, "sort": [ { "_score": { "order": "desc" } }, { "create_time": { "order": "desc" } } ] }
原理很简单:
- 不指定
sort参数时,OpenSearch默认就是按_score降序排序; - 把
_score明确放在排序数组的第一位,就能保留这个首要排序逻辑,后续的二级排序字段只会在得分相同的情况下生效。
另外你提到的track_score参数,它仅用于在返回结果中显示每个文档的相关性得分,和排序规则本身无关——如果你需要查看得分可以加上这个参数,但它不影响排序逻辑。
内容的提问来源于stack exchange,提问作者Bernardo SOUSA
相关产品推荐
相关产品推荐

