2017-03-01 3 views
0

Ich bin mit Solr 5.2.0 mit 2 Shards pro Kern und 2 Knoten pro Shard. Jede Scherbe ist in clusterstate.json konfiguriert ist, einen Bereich zu haben, zu teilen Datensätze unter den Scherben, wie folgt aus:Der Versuch, doppelte Datensätze aus Solr zu entfernen

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

Aufgrund eines Problems mit Scherbe Zuordnungen auf Knotenebene, bekam einige Daten von einer shard1 Knoten repliziert zu einem Shard2-Knoten. Momentan gibt es einige doppelte Datensätze in jedem Kern, nämlich die Daten, die von shard1 zu shard2-Knoten repliziert werden. Wenn Aktualisierungen an solr gesendet werden, wird der Datensatz (wenn er in shard1 gehört) ordnungsgemäß auf shard1-Knoten aktualisiert, aber es gibt immer noch eine [alte] Kopie einiger shard1-Einträge in den shard2-Knoten, also wird solr (abhängig von der Latenzzeit)) eine ältere Version des Datensatzes zurückgeben, wenn der shard2-Knoten auf die Anfrage antwortet.

Ich bin versucht zu sehen, ob eine Möglichkeit besteht, diese doppelte Datensätze zu finden, die nicht in shard2 Knoten und entfernen Sie sie existieren sollte.

Ich habe versucht, einige Facette Suche zu tun, aber hatte keine positiven Ergebnisse in die Duplikate zu finden, die Art und Weise. Vor allem aber ist es wichtig, nicht nur die Duplikate zu finden, sondern auch die Duplikate zu finden, die sich nicht auf dem Shard befinden sollten (basierend auf den Bereichsdefinitionen), und diese Datensätze nur zu löschen.

Alternativ eine Abfrage, um zu sehen, ob der Datensatz auf dem Knoten tatsächlich auf diesem Knoten sein sollte (wiederum basierend auf dem Bereich), wo ich einfach durch Abfrage löschen könnte.

Antwort

0

Abfrage jeder Scherbe mit dem Parameter distrib = false. Dies beschränkt das Ergebnis auf die Daten auf diesem Shard. Ich würde die IDs von jedem Shard in eine Datei ausgeben und Duplikate finden.

Verwandte Themen