Попытка удалить повторяющиеся записи из Solr

Я использую 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, и удалить их.

Я попытался выполнить поиск фасетов, но не получил никаких положительных результатов в поиске дубликатов таким образом. Но главным среди этих усилий является возможность не только находить дубликаты, но и находить дубликаты, которых не должно быть в этом осколке (на основе определений диапазона), и удалять только эти записи.

В качестве альтернативы, запрос, чтобы увидеть, действительно ли запись на узле должна быть на этом узле (опять же, на основе диапазона), где я мог бы просто удалить по запросу.


person D. Woodall    schedule 01.03.2017    source источник


Ответы (1)


Запросите каждый шард с параметром distrib=false. Это ограничивает результат данными на этом осколке. Я бы сбрасывал идентификаторы из каждого осколка в файл и находил дубликаты.

person Anand    schedule 06.03.2017