试图删除Solr中的重复记录

问题描述:

我正在使用Solr 5.2.0,每个核心有2个碎片,每个碎片有2个节点。每个碎片被clusterstate.json配置有一个范围,划分记录碎片中,像这样:试图删除Solr中的重复记录

"shard1": {"range": "0-7fffffff"}, "shard2": {"range": "80000000-ffffffff"} 

由于与在节点级碎片分配的问题,一些数据得到了从shard1节点复制到shard2节点。目前在每个核心中都有一些重复的记录,即从shard1复制到shard2节点的数据。当更新发送到solr时,记录(如果它属于shard1)在shard1节点上正确更新,但shard2节点中仍有一些shard1记录的[旧]副本,所以solr将(取决于延迟)如果shard2节点响应请求,则返回记录的较早版本。

我试图查看是否有某种方法可以找到这些不应该存在于shard2节点中的重复记录并将其删除。

我试图做一些方面的搜索,但没有任何积极的结果找到重复的方式。但是,这些努力中最主要的是不仅能够找到重复数据,而且能够找到不应该在该分片上的重复数据(基于范围定义),并且只能删除这些记录。

或者,查询节点上的记录是否实际上应该在该节点上(再次根据范围),我可以简单地通过查询删除该查询。

用参数distrib = false查询每个分片。这将结果限制在该分片上的数据。 我会将每个分片的ID转储到一个文件并查找重复项。