CoreAdmin API はどういう動きをするのかマニュアルを見てもよくわからんところがあるので、調べてみました。
注意: Solr 4 の時代のものです。Solr 5 系から改善されているかもしれません。
STATUS
各コアごとのインスタンスディレクトリなど様々な情報を返してくれます。
CREATE
コアの作成を行うAPI です。このAPI 仕様はなかなか香ばしい実装になっている。
http://localhost:8983/solr/admin/cores?action=CREATE&name=coreX&instanceDir=path_to_instance_directory&config=config_file_name.xml&schema=schema_file_name.xml&dataDir=data
上のような感じで叩くそうだが、api にパラメータを渡してコアを作成するのではなく、サーバー上にある設定ファイルへのパスを指定して作成するそうだ。
これはいけてなさすぎる。使用するとしたらサーバーの設定に深く依存しないようにするために STATUS を取得する API からに入っている instanceDir などを利用して作成したほうがいいのかもしれない。私はそもそもこのAPIを使うことを諦めてしまった。
RENAME
そのまま。コアの名前を変える。すでに存在するコア名を指定したら、コアが上書きされるものの、datadir は上書きしたものと同じになる、という挙動をする(つまり SWAP したあとに UNLOAD したのと同じ)
MERGE
インデックスを統合します。重複チェックは行われていないようで、同じコアに2回マージするとドキュメント数が倍になります。
データに対する操作なので、レプリケーションでスレーブにも同期されます。
データを反映させるのは commit する必要があります。
SWAP
指定したコア同士でdatadir をすり替えます。すり替える際はリクエストを捌くのを止めることなく、切り替えることができるます。
SWAP は API を実行したサーバーのみで反映され、スレーブでは SWAP を実行しません。ただスレイブからはマスターのすべてのデータが入れ替わったように見えるので、swap を行ったコアについてすべてのデータをマスターからスレイブに対して転送されます。
注意点はこの SWAP を実行しても状態が変化したただけで Solr の設定ファイルも一緒に変化したわけではないので、SWAP 後に Solr を restart すると SWAP する前の状態に戻ります。(これ怖い・・。