2017-01-09 91 views
0

我有一個字段(說色),它可以有四個值之一(紅,藍,黃,綠)。我想對它們進行排序,使得紅色的得分爲1,因此所有的紅色都會在頂部,其次是藍色的得分爲2,黃色的得分爲3,依此類推。Elasticsearch顯式排序得分

如何分配這些人工評分爲elasticsearch排序?

+0

請向我們展示您迄今爲止嘗試過的映射,查詢和異常。 – user3775217

回答

1

你可以使用function_score功能,該功能將提供自定義的得分功能。你可以取代MATCH_ALL查詢你所需要的一個。

{ 
    "query": { 
    "function_score": { 
     "boost_mode": "replace", 
     "query": { 
     "match_all": {} 
     }, 
     "functions": [ 
     { 
      "filter": { 
      "term": { 
       "color": "red" 
      } 
      }, 
      "weight": 1 
     }, 
     { 
      "filter": { 
      "term": { 
       "color": "blue" 
      } 
      }, 
      "weight": 3 
     }, 
     { 
      "filter": { 
      "term": { 
       "color": "yellow" 
      } 
      }, 
      "weight": 2 
     } 
     ] 
    } 
    }, 
    "size": 20, 
    "from": 0 
} 
+0

這是一個很好的,但我已經設法通過增加基於索引排序字段來達到同樣的...這樣的文檔包含的1,2或3分colorScore場然後,我只是使用這些排序。 – Marconi

+0

是的,這只是不同的方法,索引時間或查詢時間。 – Mysterion