【问题标题】:Sort ElasticSearch results by a custom Compare function on field通过字段上的自定义比较功能对 ElasticSearch 结果进行排序
【发布时间】:2021-08-11 02:01:28
【问题描述】:

如果我想从按评级排序的弹性获取驱动程序数据,其中评级可能是["good", "ok", "bad"],如何编写查询可以帮助我按排序顺序获取数据,考虑好>好>坏

Ex 排序的响应列表:

[{
    "name": "driver1",
    "rating": "good"
},
{
    "name": "driver3",
    "rating": "good"
},
{
    "name": "driver2",
    "rating": "ok"
},
{
    "name": "driver4",
    "rating": "bad"
}]

【问题讨论】:

    标签: python sorting elasticsearch elasticsearch-dsl


    【解决方案1】:

    要根据索引中的字段更改分数值,您可以使用脚本分数查询,您的查询应如下例所示:

    GET /my-index-2/_search
    {
      "query": {
        "script_score": {
          "query": {
            "match_all":{}
          },
          "script": {
            "source": "if (doc['rating.keyword'].value == 'good'){2} else if(doc['rating.keyword'].value == 'ok') {1} else if(doc['rating.keyword'].value == 'bad') {0}"
          }
        }
      }
    }
    

    有关脚本分数查询的更多信息,您可以查看 Elastic 官方文档here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多