Configsets API

Configsets API を使用すると、Solr が SolrCloud モードで実行されているときに、新しい configset を ZooKeeper にアップロードしたり、configset を作成および削除したりできます。

Configset は、solrconfig.xmlsynonyms.txt、スキーマ、言語固有のファイル、その他のコレクションレベル構成ファイル(通常 conf ディレクトリにあるすべてのもの)などの構成ファイルのコレクションです。Solr には、コレクションの作成時に使用できる 2 つのサンプル configset (_defaultsample_techproducts_configs) が付属しています。同じ概念を使用して、独自の configset を作成し、コレクションの作成時に利用できるようにすることができます。

この API は、構成ファイルを ZooKeeper にアップロードし、同じ構成ファイルのセットを 2 つ以上のコレクション間で共有する方法を提供します。

configset が ZooKeeper にアップロードされたら、Collections API を使用してコレクションを作成するときに configset 名を使用すると、コレクションは構成ファイルを使用します。

configset は、この API でアップロードされた場合、コレクション間で共有する必要はありませんが、この API を使用すると、必要に応じて共有が容易になります。configset を事前にアップロードする代わりに、構成ファイルを server/solr/configsets の下のディレクトリに配置し、bin/solr create を使用してコレクションを作成するときに、ディレクトリ名を -d パラメータとして使用することもできます。

この API は、Solr が SolrCloud モードで実行されている場合にのみ使用できます。Solr を SolrCloud モードで実行していないが、共有構成を使用したい場合は、「Configsets」のセクションを参照してください。

API は、コマンドを configs エンドポイントに渡すことによって機能します。エンドポイントへのパスは、使用されている API によって異なります。v1 API は solr/admin/configs を使用し、v2 API は api/cluster/configs を使用します。両方のタイプの例を以下に示します。

Configset のリスト表示

list コマンドは、コレクションの作成中に使用できる configset の名前を取得します。

V1 API

v1 API では、list コマンドを LIST として大文字にする必要があります。

https://127.0.0.1:8983/solr/admin/configs?action=LIST&omitHeader=true

V2 API

v2 API では、リクエストとともにデータが送信されない場合、list コマンドは暗黙的に指定されます。

https://127.0.0.1:8983/api/cluster/configs?omitHeader=true

出力は次のようになります。

{
  "configSets": [
    "_default",
    "techproducts",
    "gettingstarted"
  ]
}

Configset のアップロード

configset をアップロードします。これは zip ファイルとして送信されます。filePath パラメータを使用して、単一の zip されていないファイルもアップロードできます。

この機能はデフォルトで有効になっていますが、ランタイムパラメータ -Dconfigset.upload.enabled=false を使用して無効にすることができます。この機能を無効にすることは、Solr のインストールを信頼できないユーザーに公開する場合 (そのようなことは絶対に避けるべきですが!) は推奨されます。

認証が有効で、アップロード操作が認証されたリクエストとして実行された場合、configsetは「信頼された」モードでアップロードされます。認証がない場合、configsetは「信頼されていない」モードでアップロードされます。「信頼されていない」configsetを使用してコレクションを作成すると、以下の機能は動作しません。

  • XSLTトランスフォーマー(trパラメーター)は、リクエスト処理時に使用できません。

  • configsetで指定されている場合、ScriptUpdateProcessorFactoryは初期化されません。

  • configsetで<lib>ディレクティブが使用されている場合、コレクションは初期化されません。(注:Solrのクラスパスに追加されたライブラリには<lib>ディレクティブは必要ありません)

これらのパラメーターまたは機能を使用する場合は、Solrインストールでセキュリティ機能を有効にし、認証されたユーザーとしてconfigsetをアップロードする必要があります。

configSetで使用できるファイルタイプはすべてサポートされているわけではありません。詳細については、configuration-guide:config-sets.adoc#forbidden-file-typesを参照してください。

uploadコマンドは、次のパラメーターを受け取ります。

name

必須

デフォルト:なし

アップロードが完了したときに作成されるconfigset。

overwrite

オプション

デフォルト:説明を参照

trueに設定すると、Solrは同じ名前の既存のconfigsetを上書きします(falseの場合、リクエストは失敗します)。filePathが指定されている場合、このオプションは、configset内の指定されたファイルがすでに存在する場合に上書きするかどうかを指定します。デフォルトは、v1 APIを使用する場合はfalseですが、v2 APIを使用する場合はtrueです。

cleanup

オプション

デフォルト:false

既存のconfigsetを上書きする(overwrite=true)場合、このパラメーターは、古いconfigsetには存在したが、アップロードされているconfigsetには存在しないZooKeeper内のファイルを削除するようにSolrに指示します。filePathが使用されている場合、このパラメーターをtrueに設定することはできません。

filePath

オプション

デフォルト:なし

このパラメーターを使用すると、単一の圧縮されていないファイルを、ZooKeeper内のconfigsetの下の指定されたパスにアップロードできます。この機能はoverwriteパラメーターを尊重するため、指定されたファイルパスがconfigsetにすでに存在し、overwriteがfalseに設定されている場合、リクエストは失敗します。filePathが使用されている場合、cleanupパラメーターをtrueに設定することはできません。

configset全体をアップロードする場合、リクエストの本文はconfigsetを含むzipファイルである必要があります。zipファイルはconfディレクトリ内から作成する必要があります(つまり、solrconfig.xmlはzipファイルの最上位エントリである必要があります)。

以下は、"myconfig.zip"という名前のzipファイルを作成し、"myConfigSet"という名前のconfigsetとしてアップロードする方法の例です。

V1 API

v1 APIでは、uploadコマンドは大文字のUPLOADにする必要があります。

$ (cd solr/server/solr/configsets/sample_techproducts_configs/conf && zip -r - *) > myconfigset.zip

$ curl -X POST --header "Content-Type:application/octet-stream" --data-binary @myconfigset.zip "https://127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=myConfigSet"

同じことは、次のように単一のリクエストでUnixパイプを使用して実現できます。

$ (cd server/solr/configsets/sample_techproducts_configs/conf && zip -r - *) | curl -X POST --header "Content-Type:application/octet-stream" --data-binary @- "https://127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=myConfigSet"

V2 API

v2 APIでは、アップロードするconfigsetの名前はパスパラメーターとして提供されます。

$ (cd solr/server/solr/configsets/sample_techproducts_configs/conf && zip -r - *) > myconfigset.zip

$ curl -X PUT --header "Content-Type:application/octet-stream" --data-binary @myconfigset.zip
    "https://127.0.0.1:8983/api/cluster/configs/myConfigSet"

このAPIでは、デフォルトの動作は、configsetがすでに存在する場合に上書きすることです。この動作は、パラメーターoverwrite=falseで無効にできます。その場合、configsetがすでに存在するとリクエストは失敗します。

以下は、単一のファイルを"myConfigSet"という名前のconfigsetにアップロードする方法の例です。

V1 API

v1 APIでは、uploadコマンドは大文字のUPLOADにする必要があります。アップロードするファイル名はfilePathパラメーターを介して提供されます。

curl -X POST --header "Content-Type:application/octet-stream"
    --data-binary @solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
    "https://127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=myConfigSet&filePath=solrconfig.xml&overwrite=true"

V2 API

v2 APIでは、configsetとファイルの名前の両方がURLで提供されます。それらは/cluster/configs/config_name/file_nameで置き換えることができます。ファイル名はネストでき、/文字を含めることができます。

curl -X PUT --header "Content-Type:application/octet-stream"
    --data-binary @solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
    "https://127.0.0.1:8983/api/cluster/configs/myConfigSet/solrconfig.xml"

このAPIでは、デフォルトの動作は、ファイルがconfigset内にすでに存在する場合に上書きすることです。この動作は、パラメーターoverwrite=falseで無効にできます。その場合、ファイルがconfigset内にすでに存在するとリクエストは失敗します。

Configsetの作成

createコマンドは、以前にアップロードされたconfigsetに基づいて新しいconfigsetを作成します。

まだconfigsetをアップロードしていない場合は、上記のConfigsetのアップロードコマンドを参照してください。

configsetを作成する際に、以下のパラメーターがサポートされます。

name

必須

デフォルト:なし

作成されるconfigset。

baseConfigSet

オプション

デフォルト:_default

ベースとしてコピーするconfigsetの名前。

configSetProp.property=value

オプション

デフォルト:なし

コピーされたconfigsetでオーバーライドするベースconfigsetからのconfigsetプロパティ。

たとえば、以前に定義された"predefinedTemplate" configsetに基づいて、イミュータブルプロパティをfalseにオーバーライドした"myConfigset"という名前のconfigsetを作成するには、次のようにします。

V1 API

v1 APIでは、createコマンドは大文字のCREATEにする必要があります。

https://127.0.0.1:8983/solr/admin/configs?action=CREATE&name=myConfigSet&baseConfigSet=predefinedTemplate&configSetProp.immutable=false&wt=xml&omitHeader=true

V2 API

v2 APIでは、createコマンドは、必要なパラメーターを含むJSONデータの一部として提供されます。

curl -X POST -H 'Content-type: application/json' -d '{
  "create":{
    "name": "myConfigSet",
    "baseConfigSet": "predefinedTemplate",
    "configSetProp.immutable": "false"}}'
    https://127.0.0.1:8983/api/cluster/configs?omitHeader=true

v2 APIでは、configsetプロパティはpropertiesマップを介して提供することもできます。

curl -X POST -H 'Content-type: application/json' -d '{
  "create":{
    "name": "myConfigSet",
    "baseConfigSet": "predefinedTemplate",
    "properties": {
      "immutable": "false"
    }}}'
    https://127.0.0.1:8983/api/cluster/configs?omitHeader=true

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">323</int>
  </lst>
</response>

Configsetの削除

deleteコマンドは、configsetを削除します。configsetを使用して作成されたコレクションは削除されません。

name

必須

デフォルト:なし

削除するconfigset。

"myConfigSet"という名前のconfigsetを削除するには、次のようにします。

V1 API

v1 APIでは、deleteコマンドは大文字のDELETEにする必要があります。削除するconfigsetの名前は、nameパラメーターで提供されます。

https://127.0.0.1:8983/solr/admin/configs?action=DELETE&name=myConfigSet&omitHeader=true

V2 API

v2 APIでは、deleteコマンドは、-X DELETEのように、リクエストメソッドとして提供されます。削除するconfigsetの名前は、パスパラメーターとして提供されます。

curl -X DELETE https://127.0.0.1:8983/api/cluster/configs/myConfigSet?omitHeader=true

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">170</int>
  </lst>
</response>