看,灰机...

es sort和rescore问题

Elasticsearch | 作者 zhangdadadapao | 发布于2020年08月14日 | 阅读数:3300

查看es源码,带rescore条件时,sort排序就不生效
es版本1.6(5.x也同样不支持)
 
场景:原排序是根据A字段、自定义打分插件、B字段、C字段使用sort进行排序;现在场景想在es侧通过rescore实现二次排序(达到精排的效果),但是rescore和sort无法一起使用。
 
现在的想法是将A字段、打分分数、B字段、C字段整合到分数里,通过score让es进行排序。
 
问题:
1.es排序大家或者官方建议使用sort还是把所有条件都整合到score里,通过score排序?像我这样需要rescore机制,但是前期使用sort排序方式的,引入rescore后,改造sort还是有一定成本的。(但是多级条件,sort会更好用,理论上支持很多个double字段的多级排序,如果多个double整合到一个分数里,精度可能存在一些缺失)
2.是否有可能改造es,实现一个resort功能,与rescore类似,在query阶段再调一次lucene重新返回新的top docs(我理解的top doc是带了排序数据的,所以后续协调节点对合并的数据重新排序的代码也不需要修改)。
已邀请:

要回复问题请先登录注册