我的文档如下:
{
...
user: {
name: "some_name",
role: "admin" // this can be "admin", "member" or "guest"
}
...
}
我知道如何通过_score
搜索文档和排序结果,但我想按此顺序订购匹配的记录:
我想使用_score
作为第二个排序参数。
答案 0 :(得分:1)
您可以使用基于_script
的评分:
{
"query": {
// whatever
},
"sort": [
{
"_script": {
"script": "if(doc['role'].value=='admin') return 1; else if(doc['role'].value=='member') return 2; else if(doc['role'].value=='guest') return 3;",
"type": "number",
"order": "asc"
}
},
{
"_score": {
"order": "desc"
}
}
]
}
或者,如果您不介意并且可以这样做,您可以在索引中创建一个新字段,为每个角色放置一个数字 - 就像我在上面的脚本中所做的那样。然后,在您的查询中,您不会使用脚本,但
"sort": [
{
"role_ID_field": {
"order": "asc"
}
},
{
"_score": {
"order": "desc"
}
}
]