我的产品可能属于预订清单。每个产品都已编入索引,结构如下:
product:{"id":123, "lists": [{"id":2,"position":4},{"id":6,"position":1}]}
我想列出符合条件lists.id == 2的产品,并且工作正常。
如何按列表中的位置对弹性搜索查询进行排序,以便使用指定列表ID的位置?嵌套排序没有帮助,因为我无法定义我想用于排序的嵌套项目中的哪一个。
https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html
目前我正在尝试使用script_score但在那里没有太多进展。
也可以更改映射的结构。
答案 0 :(得分:0)
好吧,看起来我的映射有一个缺陷。它缺少必要的"类型":"嵌套"对于列表,因此嵌套排序不起作用。
答案 1 :(得分:-1)
根据我的理解按位置排序:
var dataList = {"lists": [{"id":2,"position":4},{"id":6,"position":1}]}
dataList.lists.sort(function(a,b){
return a.position - b.position;
})
console.log(dataList);