如何将选中的项目放在结果的顶部? 例如,我想让id 3和4在按名称排序后排在上面。 类似于SQL查询中的排序。
假设我有一个索引,调用person.GET person_search。
{
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"
}
}
]
}
如果你只需要简单地显示按姓名排序的结果,可以试试这个。
Kibana > Discover > index person > add name from Available fields and do then a sort by name.