通过一个特定的嵌套项进行弹性排序

时间:2017-10-23 11:09:47

标签: sorting elasticsearch nested

我的产品可能属于预订清单。每个产品都已编入索引,结构如下:

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但在那里没有太多进展。

也可以更改映射的结构。

2 个答案:

答案 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);