設定ファイルにおけるプロパティ置換

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