elasticsearch,duplicates,Java,elasticsearch,Duplicates" /> elasticsearch,duplicates,Java,elasticsearch,Duplicates" />

Java 删除重复项

Java 删除重复项,java,elasticsearch,duplicates,Java,elasticsearch,Duplicates,我目前正在将一些数据(>100MM)从Oracle迁移到Elasticsearch 我使用的批量API工作得很好,但是现在我已经迁移了所有我想通过删除重复项来清理的数据(迁移过程中产生了一些问题,需要2天时间,我不想重新开始) 我可以通过这样的查询查看我的所有副本(使用sense): 但是我在寻找使用查询删除的方法时遇到了很多问题,你看,我需要删除重复项,留下一个副本。我的意思是,如果我有两条消息的记录,我只需要删除一条,以便在ES中保留一条 你知道实现这一目标的方法吗 非常感谢您的帮助。运行查

我目前正在将一些数据(>100MM)从Oracle迁移到Elasticsearch

我使用的批量API工作得很好,但是现在我已经迁移了所有我想通过删除重复项来清理的数据(迁移过程中产生了一些问题,需要2天时间,我不想重新开始)

我可以通过这样的查询查看我的所有副本(使用sense):

但是我在寻找使用查询删除的方法时遇到了很多问题,你看,我需要删除重复项,留下一个副本。我的意思是,如果我有两条消息的记录,我只需要删除一条,以便在ES中保留一条

你知道实现这一目标的方法吗


非常感谢您的帮助。

运行查询以查找重复的记录,例如:

GET {index}/{type}/_search
{
  "query": {
    "term": {
      "message_id": {
        "value": "{message_id_value}"
      }
    }
  }
}
您的查询将返回2条记录,它们具有相同的
消息\u id
,但具有不同的
\u id
字段_id是内部ES标识符。一旦有了该标识符,您就可以删除该标识符:

DELETE {index}/{type}/{_id}

找到要保存的一个文档的ID,然后可以使用

例如,如果有3个文档的文档ID为1、2、3,则所有文档的
messageId
都是13,如果要保存文档1,则可以运行以下查询:

DELETE /yourIndex/yourType/_query
{
    "query": {
        "filtered": {
            "query": {
                "term": {
                    "messageId": "13"
                }
            },
            "filter": {
                "not": {
                    "term": {
                        "_id": 1
                    }
                }
            }
        }
    }
}

单据2和单据3将被删除,单据1仍存在于索引中。首先在本地进行测试。

消息\u id与ES文档id相同吗?不,目的不同。是的,我可以这样做,但这是一种手动操作(也许我可以编写一个程序来执行此操作,但我认为速度会很慢)。我有数千个副本,我试图找到一个“按查询删除”,可以省略一条记录或类似的东西是的,我从来没有见过“删除顶部(1)”的等价物。谢谢,当副本超过两次时,这会更有效。这很有效,有点慢,但很好,我想没有更好的方法:(是查询速度慢,还是因为必须对每个
messageId
运行查询而导致查询速度慢?如果是较晚的查询,则可以在一个查询中删除多个messageId。第二个查询,我迭代了所有存储桶,然后逐个删除。昨晚我修改了程序,一次删除100个存储桶;)
DELETE /yourIndex/yourType/_query
{
    "query": {
        "filtered": {
            "query": {
                "term": {
                    "messageId": "13"
                }
            },
            "filter": {
                "not": {
                    "term": {
                        "_id": 1
                    }
                }
            }
        }
    }
}