使用 elasticsearch sort script,目前我是根据script来做的综合排序。示例如下:
"sort": {
"hasstock": {
"order": "desc"
},
"_script": {
"script": "(1-1.0/(doc['sold'].value+1)) * 0.1 + (doc['dis_order'].value/(doc['dis_order'].value+1)) * 0.05+ (_score > 0 ? 1-1.0/_score : 0) * 0.85",
"order": "desc",
"type": "number"
},
"_score": {
"order": "desc"
},
"@timestamp": {
"order": "desc"
}
},
1、先根据是否有货排,有货在前无货在后。
2、根据多个字段计算综合得分
3、sort中排在前面的优先级高,后面的优先级低。只有当前一个排序字段的值相同时,后一个排序字段才能起到作用
有使用function score 中的script自定义计算相关性得分,根据相关性得分排序