我有一个查询,我在其中询问elasticsearch基于ID列表的记录列表。例如
匹配:id:[1,2,3]
是否可以告诉elasticsearch按此顺序将元素退还给我?我的ID列表将是数百个,并且我将每25个元素分页一次。
如果可以的话我会很高兴
{match:编号[1,2,3]
排序:id [3,1,2}
任何建议将非常有帮助。谢谢!
最佳答案
如果可能,请使用Multi Get:
POST /orderbyids/_mget
{
"ids" : [12, 80, 44, 50]
}
一种替代方法是使用动态脚本:
POST /orderbyids/_search
{
"query": {
"function_score": {
"query": {
"ids": {
"values": [
50,
80,
44,
12
]
}
},
"script_score": {
"params": {
"ids": [
12,
80,
44,
50
]
},
"script": "return -ids.indexOf(doc['id'].value.intValue());"
}
}
}
}
该功能已在封闭的issue中进行了讨论。
关于elasticsearch - 在Elasticsearch中按列表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536422/