2015-05-26 52 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"} } 
} 

此代碼將在每個文檔中索引型類型索引匹配,並且將它們按字母順序排序。

注意:它理論上適用於分析字段,但如果內容已被標記,結果將會令人驚訝,因爲結果不會根據字符串的開頭進行排序,而是使用字符串的任何字(標記) ,採取更「有利」的。

相關問題