前回「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":"*:*"}}'

コメント