Configsets API
Configsets API を使用すると、Solr が SolrCloud モードで実行されているときに、新しい configset を ZooKeeper にアップロードしたり、configset を作成および削除したりできます。
Configset は、solrconfig.xml
、synonyms.txt
、スキーマ、言語固有のファイル、その他のコレクションレベル構成ファイル(通常 conf
ディレクトリにあるすべてのもの)などの構成ファイルのコレクションです。Solr には、コレクションの作成時に使用できる 2 つのサンプル configset (_default
と sample_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>