如何将所选项目放在结果之上?例如,我想按名称排序后在顶部分别设置ID 3和4。与查询中的SQL Order类似。
假设我有一个索引调用人员。
GET人员/ _搜索
{
hits: [
"_source" : {
"id" : 1,
"name" : "Paul"
},
"_source" : {
"id" : 2,
"name" : “Mike”
},
"_source" : {
"id" : 3,
"name" : “Alex”
},
"_source" : {
"id" : 4,
"name" : “Susan”
}
]
}
我当前的搜索查询:
{ "track_total_hits": true,
"from" : 0,
"size" : 30,
"query":{
"query_string":
{
"query": " some query matchin"
}
}, "sort" :
[
{"nae" : {"order" : "desc"}}
] }}
最佳答案
您可以使用自定义脚本对文档进行排序。将有两种。
{
"sort": [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"inline": "if(params.names.containsKey(doc['name.keyword'].value)) { return params.names[doc['name.keyword'].value];} return 100;",
"params": {
"names": {
"Susan": 0,
"Alex": 1
}
}
},
"order": "asc"
}
},
{
"name.keyword": {
"order": "desc"
}
}
]
}
关于elasticsearch - Elasticsearch如何将选定的行项目放在结果顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61741282/