我有一个查询,我根据id列表向elasticsearch索取记录列表。例如
匹配:ids:[1,2,3]
是否有可能告诉elasticsearch按顺序将元素返回给我?我的id列表将是数百个,我将这些元素分成25个块。
如果我可以像
这样的话会很棒{match:ids [1,2,3] sort:ids [3,1,2}
任何建议都会非常有帮助。谢谢!
答案 0 :(得分:1)
如果可能,请使用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中讨论了该功能。