レプリカ管理コマンド
レプリカは、シャードの物理的なコピーです。レプリカは、データの追加コピーを提供することでフェイルオーバーを強化し、検索用の追加容量を提供することでスケーラビリティを向上させます。
このセクションのすべての例は、「techproducts」Solr の例を実行していることを前提としています。
bin/solr -c -e techproducts
ADDREPLICA: レプリカの追加
コレクション内のシャードに 1 つ以上のレプリカを追加します。レプリカを特定のノードに作成する場合は、ノード名を指定できます。それ以外の場合は、ノードのセットを指定でき、その中から最適なノードがレプリカの作成に選択されます。
V1 API
入力
https://127.0.0.1:8983/solr/admin/collections?action=ADDREPLICA&collection=techproducts&shard=shard1&node=localhost:8983_solr
出力
{
"responseHeader":{
"status":0,
"QTime":482},
"success":{
"localhost:8983_solr":{
"responseHeader":{
"status":0,
"QTime":396},
"core":"techproducts_shard1_replica_n3"}}}
V2 API 入力
curl -X POST https://127.0.0.1:8983/api/collections/techproducts/shards/shard1/replicas -H 'Content-Type: application/json' -d '
{
"node":"localhost:8983_solr"
}
'
出力
{
"responseHeader":{
"status":0,
"QTime":820},
"success":{
"localhost:8983_solr":{
"responseHeader":{
"status":0,
"QTime":473},
"core":"techproducts_shard1_replica_n11"}}}
ADDREPLICA パラメータ
collection
-
必須
デフォルト: なし
レプリカを作成するコレクションの名前。
shard
-
オプション
デフォルト: なし
レプリカを追加するシャードの名前。
shard
が指定されていない場合は、_route_
を指定する必要があります。 _route_
(v1)、route
(v2)-
オプション
デフォルト: なし
正確なシャード名が不明な場合、ユーザーは
_route_
値を渡すことができ、システムはシャードの名前を識別します。shard
パラメータも指定されている場合は無視されます。 node
-
オプション
デフォルト: なし
レプリカを作成するノードの名前。
createNodeSet
(v1)、nodeSet
(v2)-
オプション
デフォルト: なし
新しく作成されたレプリカの配置候補。
v1 リクエストでは、
localhost:8983_solr,localhost:8984_solr,localhost:8985_solr
のように、コンマ区切りのノード名のリストとして提供されます。v2 リクエストでは、nodeSet
は["localhost:8983_solr", "localhost:8984_solr", "localhost:8985_solr"]
のように、真のリストとして値を期待します。
node も createNodeSet /nodeSet も指定されていない場合、クラスター内のすべてのライブノードの中から最適なノードが選択されます。 |
instanceDir
-
オプション
デフォルト: なし
作成されるコアの instanceDir。
dataDir
-
オプション
デフォルト: なし
コアを作成するディレクトリ。
type
-
オプション
デフォルト:
nrt
作成するレプリカのタイプ。次の値が許可されています
-
nrt
: NRT タイプはトランザクションログを保持し、インデックスをローカルで更新します。 -
tlog
: TLOG タイプはトランザクションログを保持しますが、レプリケーションを介してのみインデックスを更新します。 -
pull
: PULL タイプはトランザクションログを保持せず、レプリケーションを介してのみインデックスを更新します。このタイプはリーダーになる資格がありません。レプリカタイプのオプションの詳細については、「レプリカのタイプ」のセクションを参照してください。
-
nrtReplicas
-
オプション
デフォルト: 説明を参照
作成する
nrt
レプリカの数。type
がnrt
の場合は1
に、それ以外の場合は0
にデフォルト設定されます。 tlogReplicas
-
オプション
デフォルト: 説明を参照
作成する
tlog
レプリカの数。type
がtlog
の場合は1
に、それ以外の場合は0
にデフォルト設定されます。 pullReplicas
-
オプション
デフォルト: 説明を参照
作成する
pull
レプリカの数。type
がpull
の場合は1
に、それ以外の場合は0
にデフォルト設定されます。 property.name=value
-
オプション
デフォルト: なし
作成されたコアに追加プロパティとして使用する名前と値のペア。サポートされるプロパティと値の詳細については、コアディスカバリーを参照してください。
各 core.properties ファイルのエントリは、Solr が正しく機能するために不可欠です。エントリをオーバーライドすると、コレクションが使用できなくなる可能性があります。 |
waitForFinalState
-
オプション
デフォルト:
false
true
の場合、影響を受けるすべてのレプリカがアクティブになった場合にのみリクエストが完了します。false
の場合、API は単一のアクションのステータスを返します。これは、新しいレプリカがオンラインでアクティブになる前の場合があります。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは非同期的に処理されます。
ADDREPLICA を使用した追加の例
入力
1 つの PULL レプリカと 1 つの TLOG レプリカを持つ "gettingstarted" コレクションのレプリカを作成します。
https://127.0.0.1:8983/solr/admin/collections?action=addreplica&collection=gettingstarted&shard=shard1&tlogReplicas=1&pullReplicas=1
出力
{
"responseHeader": {
"status": 0,
"QTime": 784
},
"success": {
"127.0.1.1:7574_solr": {
"responseHeader": {
"status": 0,
"QTime": 257
},
"core": "gettingstarted_shard1_replica_p11"
},
"127.0.1.1:8983_solr": {
"responseHeader": {
"status": 0,
"QTime": 295
},
"core": "gettingstarted_shard1_replica_t10"
}
}
}
MOVEREPLICA: レプリカを新しいノードに移動する
このコマンドは、宛先で ADDREPLICA を実行し、次にソースで DELETEREPLICA を実行することにより、レプリカをあるノードから別のノードに移動します。このコマンドが中断された場合、または ADDREPLICA 操作がアクティブな状態のレプリカを生成する前にタイムアウトした場合、DELETEREPLICA は発生しません。タイムアウトは ADDREPLICA をキャンセルせず、余分なシャードが発生します。共有ファイルシステムの場合、dataDir
が再利用されます。
同じノードに同じシャードからの複数のレプリカが存在するコレクションでこのコマンドが使用され、shard
パラメータと sourceNode
パラメータが複数のレプリカと一致する場合、選択されるレプリカは決定的ではありません(現在はランダムです)。
V1 API
入力
https://127.0.0.1:8983/solr/admin/collections?action=MOVEREPLICA&collection=test&targetNode=localhost:8983_solr&replica=core_node6
出力
{
"responseHeader": {
"status": 0,
"QTime": 3668
},
"success": "MOVEREPLICA action completed successfully, moved replica=test_shard1_replica_n5 at node=localhost:8982_solr to replica=test_shard1_replica_n7 at node=localhost:8983_solr"
}
V2 API 入力
curl -X POST https://127.0.0.1:8983/api/collections/techproducts -H 'Content-Type: application/json' -d '
{
"move-replica":{
"replica":"core_node6",
"targetNode": "localhost:8983_solr"
}
}
'
出力
{
"responseHeader": {
"status": 0,
"QTime": 3668
},
"success": "MOVEREPLICA action completed successfully, moved replica=test_shard1_replica_n5 at node=localhost:8982_solr to replica=test_shard1_replica_n7 at node=localhost:8983_solr"
}
MOVEREPLICA パラメータ
collection
-
必須
デフォルト: なし
コレクションの名前。
targetNode
-
必須
デフォルト: なし
宛先ノードの名前。
sourceNode
-
オプション
デフォルト: なし
移動するレプリカを含むノードの名前。このパラメータは、
replica
が指定されていない限り必須です。replica
が指定されている場合、このパラメータは無視されます。 shard
-
オプション
デフォルト: なし
レプリカを移動する必要があるシャードの名前。このパラメータは、
replica
が指定されていない限り必須です。replica
が指定されている場合、このパラメータは無視されます。 replica
-
オプション
デフォルト: なし
移動するレプリカの名前。このパラメータは、
shard
とsourceNode
が指定されていない限り必須ですが、このパラメータはそれらの 2 つのパラメータよりも優先されます。 timeout
-
オプション
デフォルト:
600
秒新しい場所でレプリカが有効になるのを待ってから、古い場所でレプリカを削除するまでの秒数。タイムアウトが発生した場合、削除は行われず、作成はロールバックされないため、余分なレプリカが残る可能性があります。現在、レプリカが hdfs レプリカの場合、このパラメータは無視されます。
inPlaceMove
-
オプション
デフォルト:
true
共有ファイルシステムを使用するレプリカの場合、共有データを再利用する「インプレース」移動を許可します。デフォルトは
true
ですが、レプリカにshared_storage
プロパティがあり、値がtrue
でない場合は無視されます。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは非同期的に処理されます。
DELETEREPLICA: レプリカを削除する
1 つまたは複数のレプリカの削除を許可します。削除するレプリカは複数の方法で指定できます。
-
関連するコレクション、シャード、およびレプリカ名がすべて指定されている場合は、単一の特定のレプリカを削除できます。
-
関連するコレクション名とシャード名、および削除するレプリカの
count
を指定すると、特定のシャードから複数のレプリカを削除できます。 -
関連するコレクション名と削除するレプリカの
count
を指定すると、コレクション内のすべてのシャードから複数のレプリカを削除できます。
複数のレプリカを削除する場合、Solr はアクティブで、最新であり、現在リーダーではないレプリカを選択します。
削除される各レプリカについて、対応するコアが稼働している場合は、コアがアンロードされ、エントリが clusterstate から削除され、(デフォルトでは) instanceDir と dataDir が削除されます。レプリカの基盤となるコアがダウンしている場合、エントリは clusterstate から削除され、コアが後で起動した場合は自動的に登録解除されます。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETEREPLICA&collection=techproducts&shard=shard1&replica=core_node2
V2 API
v2 API には、レプリカがどのように指定されるかに応じて、レプリカ削除のための 3 つの異なるエンドポイントがあります。
名前でレプリカを削除する場合
curl -X DELETE https://127.0.0.1:8983/api/collections/techproducts/shards/shard1/replicas/core_node2
単一のシャードから指定された数の (名前のない) レプリカを削除する場合
curl -X DELETE "https://127.0.0.1:8983/api/collections/techproducts/shards/shard1/replicas?count=3"
すべてのシャードから指定された数の (名前のない) レプリカを削除する場合
curl -X PUT -H "Content-type: application/json" "https://127.0.0.1:8983/api/collections/techproducts/scale" -d '
{
"count": 3
}
'
DELETEREPLICA パラメータ
collection
-
必須
デフォルト: なし
コレクションの名前。v1 および v2 リクエストで、それぞれクエリパラメータまたはパスパラメータとして提供されます。
shard
-
必須
デフォルト: なし
削除するレプリカを含むシャードの名前。v1 および v2 リクエストで、それぞれクエリパラメータまたはパスパラメータとして提供されます。
replica
-
オプション
デフォルト: なし
削除するレプリカの名前。v1 および v2 リクエストで、それぞれクエリパラメータまたはパスパラメータとして提供されます。
count
が代わりに使用されている場合、このパラメータは必須ではありません。それ以外の場合、このパラメータを指定する必要があります。 count
-
オプション
デフォルト: なし
削除するレプリカの数。リクエストされた数がレプリカの数を超える場合、レプリカは削除されません。レプリカが 1 つしかない場合は、削除されません。
replica
が代わりに使用されている場合、このパラメータは必須ではありません。それ以外の場合、このパラメータを指定する必要があります。 deleteInstanceDir
-
オプション
デフォルト:
true
デフォルトでは、Solr は削除されたレプリカの instanceDir 全体を削除します。インスタンスディレクトリが削除されないようにするには、これを
false
に設定します。 deleteDataDir
-
オプション
デフォルト:
true
デフォルトでは、Solr は削除されたレプリカの dataDir を削除します。データディレクトリが削除されないようにするには、これを
false
に設定します。 deleteIndex
-
オプション
デフォルト:
true
デフォルトでは、Solr は削除されたレプリカのインデックスを削除します。インデックスディレクトリが削除されないようにするには、これを
false
に設定します。 onlyIfDown
-
オプション
デフォルト:
false
true
に設定すると、レプリカがアクティブな場合は何もアクションが実行されません。 followAliases
-
オプション
デフォルト: false
解決される実際のコレクション名のエイリアスとしてコレクションパラメータを扱うことを許可するフラグ。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは非同期的に処理されます。
ADDREPLICAPROP: レプリカプロパティを追加する
特定のレプリカに任意のプロパティを割り当て、指定された値を付与します。プロパティが既に存在する場合は、新しい値で上書きされます。
V1 API
入力
https://127.0.0.1:8983/solr/admin/collections?action=ADDREPLICAPROP&collection=techproducts&shard=shard1&replica=core_node2&property=preferredLeader&property.value=true
V2 API 入力
curl -X PUT https://127.0.0.1:8983/api/collections/techproducts/shards/shard1/replicas/core_node2/properties/preferredLeader -H 'Content-Type: application/json' -d '
{
"value": "true"
}
'
ADDREPLICAPROP パラメータ
collection
-
必須
デフォルト: なし
レプリカが属するコレクションの名前。
shard
-
必須
デフォルト: なし
レプリカが属するシャードの名前。
replica
-
必須
デフォルト: なし
レプリカ (例:
core_node1
)。 property
-
必須
デフォルト: なし
追加するプロパティの名前。
これは、システムによって管理されるプロパティと区別するために、リテラル
property.
が先頭に追加されます。したがって、これら 2 つの形式は同等です。property=special
および
property=property.special
property.value
-
必須
デフォルト: なし
プロパティに割り当てる値。
shardUnique
-
オプション
デフォルト:
false
true
の場合、このプロパティを 1 つのレプリカに設定すると、そのシャード内の他のすべてのレプリカからプロパティが削除されます。デフォルトはfalse
です。preferredLeader
という定義済みのプロパティが 1 つあります。このプロパティに対してshardUnique
が強制的にtrue
になり、shardUnique
が明示的にfalse
に設定されている場合はエラーが返されます。preferredLeader
はブール値プロパティです。preferredLeader
に対してtrue
(大文字と小文字を区別しない) と等しくない値が割り当てられた場合は、false
と解釈されます。
ADDREPLICAPROP を使用した追加の例
入力
このコマンドのペアは、同じシャード内の 2 つのノードに対して、それぞれ "testprop" プロパティ (property.testprop
) を 'value1' と 'value2' に設定します。
https://127.0.0.1:8983/solr/admin/collections?action=ADDREPLICAPROP&shard=shard1&collection=collection1&replica=core_node1&property=testprop&property.value=value1
https://127.0.0.1:8983/solr/admin/collections?action=ADDREPLICAPROP&shard=shard1&collection=collection1&replica=core_node3&property=property.testprop&property.value=value2
入力
このコマンドのペアは、2 番目のコマンドで shardUnique=true
が指定されているため、"core_node_3" が "testprop" プロパティ (property.testprop
) の値を設定することになります。これにより、"core_node_1" からプロパティが削除されます。
https://127.0.0.1:8983/solr/admin/collections?action=ADDREPLICAPROP&shard=shard1&collection=collection1&replica=core_node1&property=testprop&property.value=value1
https://127.0.0.1:8983/solr/admin/collections?action=ADDREPLICAPROP&shard=shard1&collection=collection1&replica=core_node3&property=testprop&property.value=value2&shardUnique=true
DELETEREPLICAPROP: レプリカプロパティを削除する
特定のレプリカから任意のプロパティを削除します。
V1 API
入力
https://127.0.0.1:8983/solr/admin/collections?action=DELETEREPLICAPROP&collection=techproducts&shard=shard1&replica=core_node2&property=preferredLeader
V2 API 入力
curl -X DELETE https://127.0.0.1:8983/api/collections/techproducts/shards/shard1/replicas/core_node2/properties/preferredLeader