一尘不染

Elasticsearch:从索引中删除重复项

elasticsearch

我有一个包含多个重复条目的索引。它们具有不同的ID,但其他字段具有相同的内容。

例如:

{id: 1, content: 'content1'}
{id: 2, content: 'content1'}
{id: 3, content: 'content2'}
{id: 4, content: 'content2'}

删除重复项后:

{id: 1, content: 'content1'}
{id: 3, content: 'content2'}

有没有一种方法可以删除所有重复项并仅保留一个不同的条目,而无需手动比较所有条目?


阅读 1281

收藏
2020-06-22

共1个答案

一尘不染

我使用rails,如有必要,我将使用FORCE=y命令导入内容,该命令将删除并重新索引该索引和类型的所有内容……但是不确定您在哪个环境中运行ES。我只能看到的问题是数据源是否您正在从中导入(即数据库)的记录重复。我想我首先会看到数据源是否可以固定,如果可行的话,然后重新索引所有内容;否则,您可以尝试创建一个自定义导入方法,该方法仅为每个记录的重复项之一编制索引。

此外,我知道这与您要删除重复的条目不符,但是您可以简单地自定义搜索,以便仅通过最新的“时间戳记”或索引重复数据删除的数据来返回重复的ID之一,并且按您的内容字段分组-查看此帖子是否有帮助。即使这仍会在您的索引中保留重复的记录,但至少它们不会出现在搜索结果中。

我也发现了这一点:Elasticsearch删除重复项

我尝试过考虑多种可能的情况,以供您查看这些选项中的任何一项是否有效,或者至少可以临时解决。

2020-06-22