設定ファイルにおけるプロパティ置換
Solr は、設定ファイルでのプロパティ値の変数置換をサポートしており、solrconfig.xml
でさまざまな設定オプションをランタイムに指定できます。
構文は ${propertyname[:オプションのデフォルト値]}
です。これにより、Solr の起動時にオーバーライドできるデフォルトを定義できます。デフォルト値が指定されていない場合、プロパティはランタイムで指定する必要があり、そうでないと、設定ファイルの解析時にエラーが発生します。
設定ファイルで使用できるプロパティを指定する方法は複数あります。以下のうち、「設定オーバーレイ」を推奨されるアプローチとして強く検討してください。これは、configset にローカルに留まり、簡単に変更できるためです。
JVM システムプロパティ
Solr の任意の XML 設定ファイルで、任意の JVM システムプロパティを変数として使用できます。たとえば、サンプルの solrconfig.xml
ファイルでは、使用するロックタイプを定義する次の値が表示されます。
<lockType>${solr.lock.type:native}</lockType>
これは、ロックタイプのデフォルトが「ネイティブ」であることを意味しますが、Solr の起動時に JVM システムプロパティを使用してオーバーライドできます。Solr を次のように起動します。
bin/solr start -Dsolr.lock.type=none
一般に、設定する Java システムプロパティはすべて、標準の -Dproperty=value
構文を使用して bin/solr
スクリプトを介して渡すことができます。
Solr は、SOLR_
で始まるすべての環境変数を、名前を小文字にし、アンダースコアを .
で置き換えることにより、システムプロパティに自動的にマップします。これは、SOLR_LOCK_TYPE=none
で Solr を起動する(または solr.in.sh
または solr.in.cmd
で設定する)と、前の例と同じ効果があることを意味します。
または、Solr インクルードファイル (bin/solr.in.sh
または bin/solr.in.cmd
) で定義された SOLR_OPTS
環境変数に共通のシステムプロパティを追加することもできます。Solr インクルードファイルの動作の詳細については、「Solr を本番環境へ導入」を参照してください。
solrconfig.xml をオーバーライドするための Config API
Config API を使用すると、API を使用して Solr の設定、特にユーザー定義のプロパティを変更できます。この API で行われた変更は、configoverlay.json
という名前のファイルに保存されます。このファイルは API でのみ編集する必要がありますが、次の例のようになります。
{
"userProps":{"update.autoCreateFields":"false"},
"requestHandler":{"/myterms":{
"name":"/myterms",
"class":"solr.SearchHandler",
"defaults":{
"terms":true,
"distrib":false},
"components":["terms"]}}}
詳細については、「Config API」のセクションを参照してください。
core.properties におけるユーザー定義プロパティ
すべての Solr コアには、API を使用すると自動的に作成される core.properties
ファイルがあります。SolrCloud コレクションを作成するときは、パラメーター名の前に property.name
をプレフィックスとして付けることで、カスタムパラメーターを渡すことができます。
たとえば、「my.custom.prop」という名前のプロパティを追加するには
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=CREATE&name=gettingstarted&numShards=1&property.my.custom.prop=edismax
V2 API
curl -X POST -H 'Content-type: application/json' -d '{"name": "gettingstarted", "numShards": 1, "properties": {"my.custom.prop": "edismax"}}' https://127.0.0.1:8983/api/collections
これにより、少なくとも次のプロパティを持つ core.properties
ファイルが作成されます(簡潔にするために他のプロパティは省略)。
#core.properties
name=gettingstarted
my.custom.prop=edismax
my.custom.prop
プロパティは、solrconfig.xml
などで変数として使用できます。
<requestHandler name="/select">
<lst name="defaults">
<str name="defType">${my.custom.prop}</str>
</lst>
</requestHandler>
暗黙のコアプロパティ
Solr コアのいくつかの属性は、基になる値がどこでどのように初期化されたかに関係なく、変数置換で使用できる「暗黙的な」プロパティとして利用できます。
たとえば、特定の Solr コアの名前が core.properties
で明示的に設定されているか、インスタンスディレクトリの名前から推測されているかに関係なく、暗黙的なプロパティ solr.core.name
は、そのコアの設定ファイルで変数として使用できます。
<requestHandler name="/select">
<lst name="defaults">
<str name="collection_name">${solr.core.name}</str>
</lst>
</requestHandler>
すべての暗黙的なプロパティは、solr.core.
という名前プレフィックスを使用し、同等の core.properties
プロパティ のランタイム値を反映します。
-
solr.core.name
-
solr.core.config
-
solr.core.schema
-
solr.core.dataDir
-
solr.core.transient
-
solr.core.loadOnStartup