私は 2 つの solr インデックスを持っています。インデックス A には 100000 個のドキュメントが含まれ、B には 110000 個のドキュメントが含まれています。A は B のサブセットです。A XOR B = 結果と削除結果の操作を実行する必要があります。
1473 次
1 に答える
1
ここから回答:
ドキュメントが 100,000 個しかない場合は、すべてのドキュメント ID をダンプして差分を作成します。Linux ベースのシステムを使用している場合は、単純なツールを使用して実行できます。そのようなものは役に立ちます
curl "<a href="http://your.hostA:port/solr/index/select?*:*&fl=id&wt=csv">http://your.hostA:port/solr/index/select?*:*&fl=id&wt=csv" > /tmp/idsA
curl "<a href="http://your.hostB:port/solr/index/select?*:*&fl=id&wt=csv">http://your.hostB:port/solr/index/select?*:*&fl=id&wt=csv" > /tmp/idsB
diff /tmp/idsA /tmp/idsB | grep "<\|>" | awk '{print $2;}' | sed
's/\(.*\)/<id>\1<\/id>/g' > /tmp/ids_to_delete.xml
これでファイルができました。<delete>
これで、そのファイルに " " と " "を追加して、</detele>
curl を使用してそのファイルを solr にアップロードできます。
curl -X POST -d @/tmp/ids_to_delete.xml "<a href="http://your.hostA:port">http://your.hostA:port
/solr/index/upadte"
于 2012-04-23T15:25:05.087 に答える