Elasticsearch 如何将选中的行项放在结果的顶部?

问题描述 投票:0回答:1

如何将选中的项目放在结果的顶部? 例如,我想让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"}}
]    }}
elasticsearch kibana
1个回答
0
投票

你可以使用自定义脚本对文档进行排序。会有两种排序方式。

  1. 自定义脚本:对选定的值进行排序
  2. 根据名字排序:根据名字排序
{
  "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"
      }
    }
  ]
}

0
投票

如果你只需要简单地显示按姓名排序的结果,可以试试这个。

Kibana > Discover > index person > add name from Available fields and do then a sort by name.

© www.soinside.com 2019 - 2024. All rights reserved.