Я использую Solr 5.2.0 с 2 сегментами на ядро и 2 узлами на сегмент. Каждый сегмент настраивается в clusterstate.json так, чтобы он имел диапазон для разделения записей между сегментами, например:
"shard1": {"range": "0-7fffffff"}, "shard2": {"range": "80000000-ffffffff"}
Из-за проблемы с назначением сегментов на уровне узла некоторые данные были реплицированы с узла shard1 на узел shard2. В настоящее время в каждом ядре есть несколько повторяющихся записей, а именно данные, реплицированные с узлов shard1 на узлы shard2. Когда обновления отправляются в solr, запись (если она принадлежит shard1) правильно обновляется на узлах shard1, но все еще существует [старая] копия некоторых записей shard1 в узлах shard2, поэтому solr будет (в зависимости от задержки, кажется ) вернуть более старую версию записи, если узел shard2 отвечает на запрос.
Я пытаюсь выяснить, есть ли способ найти эти повторяющиеся записи, которых не должно быть в узлах shard2, и удалить их.
Я попытался выполнить поиск фасетов, но не получил никаких положительных результатов в поиске дубликатов таким образом. Но главным среди этих усилий является возможность не только находить дубликаты, но и находить дубликаты, которых не должно быть в этом осколке (на основе определений диапазона), и удалять только эти записи.
В качестве альтернативы, запрос, чтобы увидеть, действительно ли запись на узле должна быть на этом узле (опять же, на основе диапазона), где я мог бы просто удалить по запросу.