フォロワーAPIの作成
クロスクラスターレプリケーションフォロワーインデックスを作成します。
リクエスト
Python
resp = client.ccr.follow(
index="<follower_index>",
wait_for_active_shards="1",
remote_cluster="<remote_cluster>",
leader_index="<leader_index>",
)
print(resp)
Js
const response = await client.ccr.follow({
index: "<follower_index>",
wait_for_active_shards: 1,
remote_cluster: "<remote_cluster>",
leader_index: "<leader_index>",
});
console.log(response);
コンソール
PUT /<follower_index>/_ccr/follow?wait_for_active_shards=1
{
"remote_cluster" : "<remote_cluster>",
"leader_index" : "<leader_index>"
}
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、フォロワーインデックスに対して
write
、monitor
、およびmanage_follow_index
のインデックス権限を持っている必要があります。リーダーインデックスに対してread
およびmonitor
のインデックス権限を持っている必要があります。また、フォロワーインデックスを含むクラスターに対してmanage_ccr
のクラスター権限も必要です。詳細については、セキュリティ権限を参照してください。
説明
このAPIは、参照されたリーダーインデックスに従うように構成された新しいフォロワーインデックスを作成します。このAPIが返されると、フォロワーインデックスが存在し、クロスクラスターレプリケーションがリーダーインデックスからフォロワーインデックスへの操作を複製し始めます。
パスパラメータ
<follower_index>
- (必須、文字列) フォロワーインデックスの名前。
クエリパラメータ
wait_for_active_shards
- (オプション、整数) 応答する前にアクティブになるのを待つシャードの数を指定します。デフォルトでは、アクティブになるシャードを待ちません。シャードはアクティブになる前にリーダーインデックスから復元する必要があります。フォロワーシャードを復元するには、すべてのリモートLuceneセグメントファイルをフォロワーインデックスに転送する必要があります。
master_timeout
- (オプション、時間単位) マスターノードを待つ期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。
リクエストボディ
leader_index
- (必須、文字列) フォローするリーダークラスター内のインデックスの名前。
remote_cluster
- (必須、文字列) リーダーインデックスを含むリモートクラスター。
data_stream_name
- (オプション、文字列) リーダーインデックスがdata streamの一部である場合、フォロワーインデックスのローカルデータストリームがリネームされる名前。例えば、次のようなリクエスト:
Python
resp = client.ccr.follow(
index=".ds-logs-mysql-default_copy-2022-01-01-000001",
remote_cluster="remote_cluster",
leader_index=".ds-logs-mysql-default-2022-01-01-000001",
data_stream_name="logs-mysql-default_copy",
)
print(resp)
Js
const response = await client.ccr.follow({
index: ".ds-logs-mysql-default_copy-2022-01-01-000001",
remote_cluster: "remote_cluster",
leader_index: ".ds-logs-mysql-default-2022-01-01-000001",
data_stream_name: "logs-mysql-default_copy",
});
console.log(response);
コンソール
PUT /.ds-logs-mysql-default_copy-2022-01-01-000001/_ccr/follow
{
"remote_cluster" : "remote_cluster",
"leader_index" : ".ds-logs-mysql-default-2022-01-01-000001",
"data_stream_name": "logs-mysql-default_copy"
}
リーダーインデックス.ds-logs-mysql-default-2022-01-01-000001
をフォロワーインデックス.ds-logs-mysql-default_copy-2022-01-01-000001
に複製し、元のリーダーデータストリーム名logs-mysql-default
ではなく、データストリームlogs-mysql-default_copy
を使用して行います。
settings
(オブジェクト) リーダーインデックスからオーバーライドする設定。特定の設定はオーバーライドできないことに注意してください(例:
index.number_of_shards
)。max_read_request_operation_count
- (整数) リモートクラスターからの読み取りごとにプルする最大操作数。
max_outstanding_read_requests
- (長整数) リモートクラスターからの未処理の読み取りリクエストの最大数。
max_read_request_size
- (バイト値) リモートクラスターからプルされた操作のバッチごとの最大サイズ(バイト)。
max_write_request_operation_count
- (整数) フォロワーで実行されるバルク書き込みリクエストごとの最大操作数。
max_write_request_size
- (バイト値) フォロワーで実行されるバルク書き込みリクエストごとの最大操作の合計バイト数。
max_outstanding_write_requests
- (整数) フォロワーでの未処理の書き込みリクエストの最大数。
max_write_buffer_count
- (整数) 書き込みのためにキューに入れられる最大操作数。この制限に達すると、リモートクラスターからの読み取りは、キューに入れられた操作の数が制限を下回るまで延期されます。
max_write_buffer_size
- (バイト値) 書き込みのためにキューに入れられる最大操作の合計バイト数。この制限に達すると、リモートクラスターからの読み取りは、キューに入れられた操作の合計バイト数が制限を下回るまで延期されます。
max_retry_delay
- (時間値) 例外的に失敗した操作を再試行する前に待機する最大時間。再試行時には指数バックオフ戦略が採用されます。
read_poll_timeout
- (時間値) フォロワーインデックスがリーダーインデックスと同期しているときに、リモートクラスターで新しい操作を待つ最大時間。タイムアウトが経過すると、操作のポーリングはフォロワーに戻り、いくつかの統計を更新できます。その後、フォロワーは再びリーダーから読み取ろうとします。
デフォルト値
フォロー情報APIからの以下の出力は、上記のインデックスフォローリクエストパラメータのすべてのデフォルト値を説明しています:
コンソール-結果
{
"follower_indices" : [
{
"parameters" : {
"max_read_request_operation_count" : 5120,
"max_read_request_size" : "32mb",
"max_outstanding_read_requests" : 12,
"max_write_request_operation_count" : 5120,
"max_write_request_size" : "9223372036854775807b",
"max_outstanding_write_requests" : 9,
"max_write_buffer_count" : 2147483647,
"max_write_buffer_size" : "512mb",
"max_retry_delay" : "500ms",
"read_poll_timeout" : "1m"
}
}
]
}
例
この例では、follower_index
という名前のフォロワーインデックスを作成します:
Python
resp = client.ccr.follow(
index="follower_index",
wait_for_active_shards="1",
remote_cluster="remote_cluster",
leader_index="leader_index",
settings={
"index.number_of_replicas": 0
},
max_read_request_operation_count=1024,
max_outstanding_read_requests=16,
max_read_request_size="1024k",
max_write_request_operation_count=32768,
max_write_request_size="16k",
max_outstanding_write_requests=8,
max_write_buffer_count=512,
max_write_buffer_size="512k",
max_retry_delay="10s",
read_poll_timeout="30s",
)
print(resp)
Js
const response = await client.ccr.follow({
index: "follower_index",
wait_for_active_shards: 1,
remote_cluster: "remote_cluster",
leader_index: "leader_index",
settings: {
"index.number_of_replicas": 0,
},
max_read_request_operation_count: 1024,
max_outstanding_read_requests: 16,
max_read_request_size: "1024k",
max_write_request_operation_count: 32768,
max_write_request_size: "16k",
max_outstanding_write_requests: 8,
max_write_buffer_count: 512,
max_write_buffer_size: "512k",
max_retry_delay: "10s",
read_poll_timeout: "30s",
});
console.log(response);
コンソール
PUT /follower_index/_ccr/follow?wait_for_active_shards=1
{
"remote_cluster" : "remote_cluster",
"leader_index" : "leader_index",
"settings": {
"index.number_of_replicas": 0
},
"max_read_request_operation_count" : 1024,
"max_outstanding_read_requests" : 16,
"max_read_request_size" : "1024k",
"max_write_request_operation_count" : 32768,
"max_write_request_size" : "16k",
"max_outstanding_write_requests" : 8,
"max_write_buffer_count" : 512,
"max_write_buffer_size" : "512k",
"max_retry_delay" : "10s",
"read_poll_timeout" : "30s"
}
コンソール-結果
{
"follow_index_created" : true,
"follow_index_shards_acked" : true,
"index_following_started" : true
}