有誰知道是否可以在elasticsearch中自定義排序嗎?Elasticsearch中的自定義排序
我對類別字段進行了排序。按類別將所有記錄分組在一起。這很好。
然而,你可以給排序例如汽車,書籍,食物。
它會先顯示汽車,然後是書籍和食物?
有誰知道是否可以在elasticsearch中自定義排序嗎?Elasticsearch中的自定義排序
我對類別字段進行了排序。按類別將所有記錄分組在一起。這很好。
然而,你可以給排序例如汽車,書籍,食物。
它會先顯示汽車,然後是書籍和食物?
可以使用function_score query,是這樣的:
{
"query": {
"function_score": {
"query": { "match_all": {} },
"boost": "5",
"functions": [
{
"filter": { "match": { "category": "cars" } },
"weight": 100
},
{
"filter": { "match": { "category": "books" } },
"weight": 50
},
{
"filter": { "match": { "category": "food" } },
"weight": 1
}
],
"score_mode": "max",
"boost_mode": "replace"
}
}
}
你在哪裏,當然,放取查詢您現在正在使用的,而不是match_all
查詢,並留下關閉sort
(默認是分數,這就是你想要的)。
這是取代elasticsearch通常生成的分數,每個分類都有一個自定義分數。您可以嘗試其他boost_mode
以便在類別中獲得合理的排名。如果您需要了解得分情況,可以將"explain": true
添加到頂級查詢中。
您可以使用自定義腳本進行自己的評分。
在基於腳本的更多細節分揀部:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-request-sort.html
可以請你告訴我們,你有什麼樣的數據模型和什麼類型的你正在運行的查詢,絕對function_score將解決您的問題,但我們可以得到一個更高性能的解決方案,如果我可以看到模型和查詢。 – user3775217
請發佈樣本文件,以便我們瞭解汽車,書籍和食物是:/ –