2017-03-01 54 views
0

我正在使用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節點中的重複記錄並將其刪除。

我試圖做一些方面的搜索,但沒有任何積極的結果找到重複的方式。但是,這些努力中最主要的是不僅能夠找到重複數據,而且能夠找到不應該在該分片上的重複數據(基於範圍定義),並且只能刪除這些記錄。

或者,查詢節點上的記錄是否實際上應該在該節點上(再次根據範圍),我可以簡單地通過查詢刪除該查詢。

回答

0

用參數distrib = false查詢每個分片。這將結果限制在該分片上的數據。 我會將每個分片的ID轉儲到一個文件並查找重複項。