避免在Elasticsearch中重复文档

时间:2015-11-06 18:53:56

标签: elasticsearch

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

您可以详细了解此方法here

答案 1 :(得分:0)

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