避免在Elasticsearch中重复文档

问题描述 投票:0回答:2

我从JSON解析文档,JSON将作为父文档的子项添加。我只是将项目发布到索引,而不关心id。

有时候会有JSON的更新,并且会添加项目。所以例如我从JSON解析了2个文档,一两个星期后我再次解析相同的JSON。这次JSON包含3个文档。

我找到的答案如下:'删除所有孩子并再次插入所有项目。',但我怀疑这是我正在寻找的解决方案。

如果没有相同的孩子,我可以将每个项目与我的目标父母的孩子进行比较并添加新文档。

我想知道是否有办法,让elasticsearch处理重复。

elasticsearch
2个回答
1
投票

需要在ID处理本身中处理重复。选择一个对文档唯一的密钥,并将其作为_id。在密钥太大或它是多个密钥时,从中创建一个SHAH校验和并将其作为_id。

如果您已在数据库中使用重复数据删除,则可以使用嵌套了top_hits聚合的术语聚合来检测这些重复数据。

你可以阅读更多关于这种方法here


0
投票

向elasticsearch添加新文档时,它首先扫描现有文档以查看是否有任何ID匹配。如果已存在具有该ID的现有文档,则将更新文档而不是添加重复文档(版本字段将同时更新以跟踪已发生的更新量)。因此,您需要以某种方式跟踪文档ID,并在匹配的文档中保持相同的ID,以消除重复的可能性。

© www.soinside.com 2019 - 2024. All rights reserved.