【问题标题】:Represent enum in Elastic Search for sorting在 Elastic Search 中表示枚举以进行排序
【发布时间】:2021-06-10 07:13:53
【问题描述】:

我有一个用例来表示弹性搜索中难度级别(EASY、MEDIUM、DIFFICULT)的枚举,并支持对该字段进行排序。如果此字段被索引为字符串,则排序将无法按预期进行。

支持这一点的一种方法是为 ES 中的每个枚举索引整数值,并在 ES 返回排序结果时将其映射到字符串值。

是否有其他替代方案,例如 ES 本身负责按枚举顺序排序,而该字段被索引为字符串?我可以为字段指定自定义排序功能吗? function_score 是一个选项,但鉴于我必须根据枚举排序进行排序,有没有比定义自定义 function_score 更好的方法?

在我的用例中,有多个这样的枚举定义跨维度的尺度,如难度、高度(低、中、高)、等级(好、平均、差)等。上述两种解决方案都需要自定义工作作为新维度介绍。以上两种方法都可以泛化吗?

【问题讨论】:

    标签: sorting elasticsearch enums


    【解决方案1】:

    您可以查看同一问题的答案here。您将需要使用 script_score,如下所示:

    GET /my-index-2/_search
    {
      "query": {
        "script_score": {
          "query": {
            "match_all":{}
          },
          "script": {
            "source": "if (doc['field name'].value == 'EASY'){2} else if(doc['field name'].value == 'MEDIUM') {1} else if(doc['field name'].value == 'DIFFICULT') {0}"
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      相关资源
      最近更新 更多