我们正在考虑对Elastic Search中存储的项目进行耦合。在建立索引时,我们在项目doc中为项目的耦合信息建立索引。有没有一种方法可以查询弹性搜索,以便将耦合的项目合并到结果中?
例如:
item1 = {
...
coupled_item: item2
...
}
item2 = {
...
coupled_item: item1
...
}
query_result = [item3, item6, item1, item2, item4, item5]
我们认为的一种方法是在商品文档中添加一个score
键,并将耦合产品的得分设置为相等,然后在查询时按该得分对其进行排序。
我们已经在使用这种技术进行排序,我们不想阻碍该顺序,我们只想将已耦合项目从其位置插入到项目下方。
我们认为的另一种方法是从ES查询所有项目,然后通过代码对其进行处理。
缺点是,这不是最佳解决方案,在这种情况下,我们还需要自行处理分页。
Elastic Search是否提供了一项功能以在内部处理耦合。如果没有,那么我们还有其他方法可以解决这个问题。
答案 0 :(得分:0)
耦合的(相关的)文档可以在彼此内部重复。
item1 = {
id: item1
coupled_item: {
id: item2
}
...
}
item2 = {
id: item2
coupled_item: {
id: item1
}
...
}
es_query_result = [item1 {item2}, item3 {item4}, item5 {item6}]
application_flattened_result = [item1, item2, item3, item4, item5, item6]
这将给文档写入带来一些挑战,因为现在两个文档将通过两个请求进行更新,但是可以完成。此外,搜索查询的分页也会变得棘手。
据我所知,只有内部支持的功能足够接近--https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html