sorting - Elasticsearch 中的耦合

标签 sorting elasticsearch coupling

我们正在考虑对Elastic Search中存储的项目进行耦合。在建立索引时,我们在项目doc中为项目的耦合信息建立索引。有没有一种方法可以查询 Elasticsearch ,以便将耦合的项目合并到结果中?

例如:

item1 = {
    ...
    coupled_item: item2
    ...
}

item2 = {
    ...
    coupled_item: item1
    ...
}

query_result = [item3, item6, item1, item2, item4, item5]

方法1

我们认为的一种方法是在项目doc中添加score键,并将耦合产品的得分设置为相等,然后在查询时按该得分对其进行排序。

缺点

我们已经在使用这种技术进行排序,我们不想阻止该顺序,我们只想将已耦合项目从其位置插入到项目下方。

方法2

我们认为的另一种方法是从ES查询所有项目,然后通过代码对其进行处理。

缺点

缺点是这不是最佳解决方案,在这种情况下,我们还需要自己处理分页。

Elastic Search提供了一项功能来内部处理耦合吗?如果没有,那么我们还有其他方法可以解决这个问题。

最佳答案

耦合的(相关的)文档可以在彼此内部重复。

    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

关于sorting - Elasticsearch 中的耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58852363/

相关文章:

elasticsearch - NEST:更新源过滤器

coupling - 通过将两个不同的数据项存储在单个变量中来耦合它们的概念是否有名称?

OO设计中的耦合

algorithm - 我在 Burrows Wheeler 变换中使用什么 EOF 字符?

c# - 如何按值对 JObject 进行排序

elasticsearch - Kibana中的图表,用于计算字段的出现次数

ruby-on-rails - 在 Rails 应用程序中使用模块建模

java - 难以理解合并排序算法的合并部分

xaml - 如何仅在 XAML 中对 DataTemplate 中的 Listview 进行排序?

python - 按pyes和elasticsearch中的多个参数排序