【问题标题】:Elasticsearch How to put selected rows items on top of resultsElasticsearch如何将选定的行项放在结果的顶部
【发布时间】:2020-05-11 23:40:56
【问题描述】:

如何将所选项目置于结果之上?例如,在按名称排序后,我希望 id 3 和 4 在顶部。类似于查询中的 SQL 顺序。

假设我有一个索引呼叫人。 获取人/_搜索

{
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】:

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

    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"
          }
        }
      ]
    }
    

    【讨论】:

      【解决方案2】:

      如果您只需要显示按名称排序的结果,请尝试以下操作:

      Kibana > Discover > index person > 从可用字段中添加姓名,然后按姓名排序

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多