我有一个具有2种不同doc类型的 flex 搜索索引:'a'
和'b'
。我想按类型对结果进行排序,并优先考虑type='b'
(即使它的得分较低)。我曾经在客户端使用下面的搜索结果并对它们进行排序,但是我意识到这种方法效果不佳,因为我只检查了通常不包含b的前10个结果。增加返回结果并不理想。我想进行 flex 搜索以完成工作。http://<server>:9200/my_index/_search?q=london
最佳答案
您将需要使用 function_score
,并根据每种文档的评分方式,使用每种类型的test some weight
values, boost_mode
s and score_mode
s。例如:
GET /some_index/a,b/_search
{
"query": {
"function_score": {
"query": {
# your query here
},
"functions": [
{
"filter": {
"type": {
"value": "b"
}
},
"weight": 3
},
{
"filter": {
"type": {
"value": "a"
}
},
"weight": 1
}
],
"score_mode": "first",
"boost_mode": "multiply"
}
}
}
关于elasticsearch - Elasticsearch -按文档类型排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212462/