根据弹性搜索中的字符串值排序

HAN*_*AUL 2 elasticsearch

我在数据中有一个名为“评级”的字段。该字段的值将是以下“好”、“平均”或“差”之一。我想要得到的是根据文档拥有的“评级”字段值对文档进行排序。由于字段值是一个字符串,我如何根据该值进行排序?

Vin*_*han 5

据我了解,您希望为“评级”字段中的值赋予权重,然后按降序对它们进行排序。您可以使用以下脚本:

 "sort": {
    "_script": {
      "script": "factor.get(doc[\"rating\"].value)",
      "type": "number",
      "params": {
        "factor": {
          "good": 2,
          "average": 1,
          "bad": 0
        }
      },
      "order": "desc"
    }
  }
Run Code Online (Sandbox Code Playgroud)

这将为“评级”数组中的元素提供数值,然后按降序对文档进行排序。更多关于这方面的内容可以在这里找到