我有我有id的顺序,[1,4,2,5]和一些过滤器{ match:{...} },并且我希望结果文档按[1,4,2,5]的顺序返回。实现此目的的最佳方法是什么?
示例文档:
{
"id": <uuid>,
"name": "Some name",
"description": "Some description"
}
现在我知道每个文档的ES stores _id和es doc的_id以及我的doc中的id字段是相同的。
所以我想提供一个id数组,并在所有的过滤后按该顺序得到结果。
例如,我有4个文档
{
"id": "abcd",
"name": "test1",
"description": "test1"
},
{
"id": "bcde",
"name": "test2",
"description": "test2"
},
{
"id": "cdef",
"name": "test3",
"description": "test3"
}
现在我有id数组[“cdef”,“abcd”,“bcde”],所以我想查询es并以上面指定的顺序得到结果,这意味着具有cdef
的doc必须首先出现在命中中,然后是具有abcd
的doc,最后是具有bcde
的doc
2条答案
按热度按时间iyfamqjs1#
这个答案是基于使用脚本排序的。在这里,您需要将所有数组项与score值一起传递,并基于此,当特定文档与id匹配时,脚本将为该文档分配分数。
1aaf6o9v2#
我建议您使用如下脚本: