Solr6のCoreAdminについて調べました。
1.Coreを作成する
#su - solr -c "/path/to/solr/bin/solr create_core -c corename"
事情がありsu使用していますが、このsuで「create_core」を実行すると失敗してしまいます。これはコア作成する際に、コアのフォルダーがsuの権限で作成され、のちsolrユーザがアクセスしようとすると、権限の問題が原因だと思われる。
Solrをインストールする際に作られた「solr」ユーザで実行すればこの問題を解決できます。
http://solr-host:8983/solr/admin/cores?action=CREATE&name=corename&instanceDir=corename
ちなみに、上記コマンドの中でもHTTP APIを使うことになっているが、このAPIを直接呼んでもコアを作成することができない。このAPIを使うには「corename」のフォルダーが存在し、solr_configとschemaを配置しておくことが必要です。API経由のコア作成は推奨されていません。
こちらのコマンドは標準のsolr_configとschemaをコピーでとってきてくれるようになっており、独立のコアを作成することができます。また以下のようにSolrには複数コア間のconfigとschemaを共用するコアを作成することもできます。
http://solr-host:8983/solr/admin/cores?action=CREATE&name=corename&instanceDir=corename&configSet=myconfigset
configsetは最初「$SOLR_HOME/configsets」に置かれている、「solr.xml」で設定可能。ちなみに、こちらのAPIはsolr_configとschemaをあらたに用意する必要がないため、コアの作成はAPIだけで完結できます。
/<configSetBaseDir>
/myconfigset
/conf
/managed-schema
/solrconfig.xml
/otherconfigset
/conf
/managed-schema
/solrconfig.xml
2.Coreを削除する
path/to/solr/bin/solr delete -c corename
http://solr-host:8983/solr/admin/cores?action=UNLOAD&core=corename&deleteIndex=true&deleteDataDir=true&deleteInstanceDir=true
作成と異なり、削除は直接APIから実行可能です。
3.コアをまたいだ検索
コアは大きくなることが予想できたら、複数のコアに分けてインデックスする方式を考えたほうがいいかもしれません、そのときShardsを用いコアをまたぐ検索ができます。もともと分散検索に用いたものですが、同一サーバでも機能します。
http://solr-host:8983/solr/corename/select?indent=on&q=*:*&shards=solr-host:8983/solr/corename,solr-host:8983/solr/othercorename