レプリカ管理コマンド

レプリカは、シャードの物理的なコピーです。レプリカは、データの追加コピーを提供することでフェイルオーバーを強化し、検索用の追加容量を提供することでスケーラビリティを向上させます。

このセクションのすべての例は、「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"] のように、真のリストとして値を期待します。

nodecreateNodeSet/nodeSet も指定されていない場合、クラスター内のすべてのライブノードの中から最適なノードが選択されます。
instanceDir

オプション

デフォルト: なし

作成されるコアの instanceDir。

dataDir

オプション

デフォルト: なし

コアを作成するディレクトリ。

type

オプション

デフォルト: nrt

作成するレプリカのタイプ。次の値が許可されています

  • nrt: NRT タイプはトランザクションログを保持し、インデックスをローカルで更新します。

  • tlog: TLOG タイプはトランザクションログを保持しますが、レプリケーションを介してのみインデックスを更新します。

  • pull: PULL タイプはトランザクションログを保持せず、レプリケーションを介してのみインデックスを更新します。このタイプはリーダーになる資格がありません。

    レプリカタイプのオプションの詳細については、「レプリカのタイプ」のセクションを参照してください。

nrtReplicas

オプション

デフォルト: 説明を参照

作成する nrt レプリカの数。typenrt の場合は 1 に、それ以外の場合は 0 にデフォルト設定されます。

tlogReplicas

オプション

デフォルト: 説明を参照

作成する tlog レプリカの数。typetlog の場合は 1 に、それ以外の場合は 0 にデフォルト設定されます。

pullReplicas

オプション

デフォルト: 説明を参照

作成する pull レプリカの数。typepull の場合は 1 に、それ以外の場合は 0 にデフォルト設定されます。

property.name=value

オプション

デフォルト: なし

作成されたコアに追加プロパティとして使用する名前と値のペア。サポートされるプロパティと値の詳細については、コアディスカバリーを参照してください。

各 core.properties ファイルのエントリは、Solr が正しく機能するために不可欠です。エントリをオーバーライドすると、コレクションが使用できなくなる可能性があります。property.name=value を指定してこれらのエントリを変更することは、専門家向けのオプションであり、結果を十分に理解している場合にのみ使用する必要があります。

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

オプション

デフォルト: なし

移動するレプリカの名前。このパラメータは、shardsourceNode が指定されていない限り必須ですが、このパラメータはそれらの 2 つのパラメータよりも優先されます。

timeout

オプション

デフォルト: 600

新しい場所でレプリカが有効になるのを待ってから、古い場所でレプリカを削除するまでの秒数。タイムアウトが発生した場合、削除は行われず、作成はロールバックされないため、余分なレプリカが残る可能性があります。現在、レプリカが hdfs レプリカの場合、このパラメータは無視されます。

inPlaceMove

オプション

デフォルト: true

共有ファイルシステムを使用するレプリカの場合、共有データを再利用する「インプレース」移動を許可します。デフォルトは true ですが、レプリカに shared_storage プロパティがあり、値が true でない場合は無視されます。

async

オプション

デフォルト: なし

このアクションを追跡するためのリクエスト ID。これは非同期的に処理されます

DELETEREPLICA: レプリカを削除する

1 つまたは複数のレプリカの削除を許可します。削除するレプリカは複数の方法で指定できます。

  1. 関連するコレクション、シャード、およびレプリカ名がすべて指定されている場合は、単一の特定のレプリカを削除できます。

  2. 関連するコレクション名とシャード名、および削除するレプリカの count を指定すると、特定のシャードから複数のレプリカを削除できます。

  3. 関連するコレクション名と削除するレプリカの 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 レスポンス

レスポンスには、リクエストのステータスが含まれます。ステータスが "0" 以外の場合は、エラーメッセージでリクエストが失敗した理由が説明されます。

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

DELETEREPLICAPROP パラメータ

collection

必須

デフォルト: なし

レプリカが属するコレクションの名前。

shard

必須

デフォルト: なし

レプリカが属するシャードの名前。

replica

必須

デフォルト: なし

レプリカ (例: core_node1)。

property

必須

デフォルト: なし

削除するプロパティ。

DELETEREPLICAPROP レスポンス

レスポンスには、リクエストのステータスが含まれます。ステータスが "0" 以外の場合は、エラーメッセージでリクエストが失敗した理由が説明されます。