2015-05-26 48 views
1

我在数据中有一个名为“rating”的字段。该字段的值将是以下“良好”,“平均”或“坏”之一。我试图得到的是根据他们拥有的“评价”字段值对文档进行排序。由于字段值是一个字符串,我如何根据该值进行排序?基于弹性搜索中的字符串值排序

+1

你看了吗? - https://www.elastic.co/guide/en/elasticsearch/guide/master/multi-fields.html – swatkins

回答

4

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

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

这将使元素中的“等级”阵列的数值,然后按降序的文件进行排序。 更多关于这可以在here

1

找到您可以sort on a text field(我建议这样做,非分析领域),该文件将在字母顺序如果按升序排序和按字母倒序如果排序按降序排列。

实施例:

POST index/type/_search 
{ 
    "query":{ 
     "match_all": {} 
    }, 
    "sort":{"my_not_analyzed_field":{"order":"asc"} } 
} 

此代码将在每个文档中索引型类型索引匹配,并且将它们按字母顺序排序。

注意:它理论上适用于分析字段,但如果内容已被标记,结果将会令人惊讶,因为结果不会根据字符串的开头进行排序,而是使用字符串的任何字(标记) ,采取更“有利”的。

相关问题