SOLR Adminを使用してSOLRインデックス内のすべてのドキュメントを削除するにはどうすればよいですか。
私はURLを使用しようとしましたが、それは動作しますが、管理者を使用して同じことができるかどうかを知りたいです。
更新:Solrの新しいバージョンは、この回答でより良く機能する可能性があります: https://stackoverflow.com/a/48007194/3692256
私の元の答えは以下の通りです:
私は少しだましていますが、クエリを手で書くほどではありません。
私は以前に誤って削除するという痛みを経験したことがあるので、可能な限り(あらゆる種類のデータストアで)削除を確実にしようとします。
1)左上にある「q」パラメーターのみを使用して、Solr管理クエリ画面でクエリを実行します。実際に削除するアイテムに絞り込みます。この例では、*:*
を使用していますが、id:abcdef
や範囲などを使用できます。クレイジーな複雑なクエリがある場合は、削除するデータの各部分に1回ずつ、これを複数回行う方が簡単な場合があります。
2)結果の上に、グレー表示されたURLがあります。マウスをその上に置くと、黒に変わります。これは、結果を取得するために使用されたURLです。右(コンテキスト)をクリックして、新しいタブ/ウィンドウで開きます。次のようなものが得られるはずです。
http://localhost:8983/solr/my_core_name/select?q=*%3A*&wt=json&indent=true
今、私はそれを削除形式にしたいです。 select?q=
をupdate?commit=true&stream.body=<delete><query>
に置き換え、最後に&wt=json&indent=true
を</query></delete>
に置き換えます。
だから私は最終的に:
http://localhost:8983/solr/my_core_name/update?commit=true&stream.body=<delete><query>*%3A*</query></delete>
深呼吸して、幸運のために何でもし、URLを送信します(キーを入力してください)。
これで、Solr管理ページに戻って元のクエリを実行し、結果がゼロになるはずです。
Solr Admin UIのDocumentタブで以下のクエリのいずれかを使用します。
XML:
_<delete><query>*:*</query></delete>
_
JSON:
_{'delete': {'query': '*:*'}}
_
必ず_Document Type
_ドロップダウンをSolr Command (raw XML or JSON)
に選択してください。
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<commit />'
このソリューションは、選択した削除ではなく、複数のコレクション内のすべてのドキュメントを削除する場合にのみ適用できます。
同じシナリオで、複数のコレクションのすべてのドキュメントを削除する必要がありました。各シャードには50万件近くのドキュメントがあり、各コレクションには複数のシャードがありました。クエリを使用してドキュメントを更新および削除することは大きなタスクであったため、以下のプロセスに従いました。
http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json
これは、コレクションの名前、numShards、configname、router.field、maxShards、replicationFactorなどの詳細を提供します。http://<solr-ip>:<port>/solr/admin/collections?action=BACKUP&name=myBackupName&collection=myCollectionName&location=/path/to/my/shared/drive
http://<solr-ip>:<port>/solr/admin/collections?action=DELETEALIAS&name=collectionname
http://<solr-ip>:<port>/solr/admin/collections?action=CREATE&name=collectionname&numShards=number&replicationFactor=number&maxShardsPerNode=number&collection.configName=configname&router.field=routerfield
上記の手順をすべてのコレクションに対してループで実行し、膨大なデータを持つ約100のコレクションに対して数秒で完了しました。さらに、すべてのコレクションのバックアップもありました。
他のSolr APIについては、こちらを参照してください: DELETEALIAS:Delete a Collection Alias、Input