我在数据中有称为“评级”的字段。该字段的值将是以下“好”,“平均”或“坏”之一。我想要得到的是根据他们拥有的“评级”字段值对文档进行排序。由于字段值是字符串,我如何根据该值进行排序?
答案 0 :(得分:4)
据我所知,您希望“rating”字段中的值被赋予权重,然后按降序对它们进行排序。 您可以使用以下脚本:
"sort": {
"_script": {
"script": "factor.get(doc[\"rating\"].value)",
"type": "number",
"params": {
"factor": {
"good": 2,
"average": 1,
"bad": 0
}
},
"order": "desc"
}
}
这将为“rating”数组中的元素提供数值,然后按降序对文档进行排序。 有关详细信息,请参阅here
答案 1 :(得分:1)
您可以sort on a text field(我建议在未分析的字段上执行此操作),如果按升序排序,文档将按字母顺序排序,如果排序则按反向字母顺序排序按降序排列。
示例:
POST index/type/_search
{
"query":{
"match_all": {}
},
"sort":{"my_not_analyzed_field":{"order":"asc"} }
}
此代码将匹配 type 类型的索引 index 中的每个文档,并按字母顺序对它们进行排序。
注意:理论上它适用于分析的字段,但如果内容已被标记化,结果将会令人惊讶,因为结果不会根据字符串的开头排序,而是使用字符串的任何单词(标记),采取更“有利”的一个。