
前回「SolrでCoreを作った後、jsonを入れて見た。」でデータは入れて見たんですけど、削除ってどうすんの?とよくわからなかったので、ひとまずAPI側からcurlを使って削除を試してみました。 基本的に私が将来やりたいのは、別のサーバーからSolr側のサーバーへデータを流し込んで、Solr側は検索結果を返すだけという検索専用のサーバーとして運用予定ですので、Solr管理画面ではなく、なるべくAPIからの処理を行う必要があります。 今回は削除について試してみたので、メモ書き。
Solrに入れたデータをのunique keyを調べてみる
今回はユニークキーを指定して削除を実行したいと思います。
まずは、前回何も定義せずにデータを入れてしまったので、ユニークキーが何なのか不明です。
managed-schemaから、何がユニークキーなのかを調べます。
/var/solr/data/new_core/managed-schema を見てみると…idがユニークキーのようです
Solrからデータをdeleteしてみる
コマンドラインから、crulを使ってドキュメントを削除してみます。
指定するのはuniquekeyを使います。
curl "http://192.168.11.30:8983/solr/new_core/update?commit=true" -H 'Content-type:text/json;charset=utf-8' --data-binary '{"delete":{"id":"http://gihyo.jp/book/2007/978-4-7741-3054-5"}}'
で、実行結果
実行結果に表示されている
"responseHeader":{
"status":0,
"QTime":91}}
のresponseHeader というのは、実行結果をjsonで返してきたものですが、status:0 は正常に実行完了したというもので、Qtime:91は、実行にかかった時間です。ミリ秒表記なので、0.091sで実行完了したことを指しています。
ひとまず、正常に削除が実行できました。
追記:全件を削除する方法は以下のとおり。deleteにqueryを指定します
curl "http://192.168.11.30:8983/solr/new_core/update?commit=true" -H 'Content-type:text/json;charset=utf-8' --data-binary '{"delete":{"query":"*:*"}}'