创建自动跟随模式 API

编辑

创建一个跨集群复制自动跟随模式

请求

编辑
resp = client.ccr.put_auto_follow_pattern(
    name="<auto_follow_pattern_name>",
    remote_cluster="<remote_cluster>",
    leader_index_patterns=[
        "<leader_index_pattern>"
    ],
    leader_index_exclusion_patterns=[
        "<leader_index_exclusion_pattern>"
    ],
    follow_index_pattern="<follow_index_pattern>",
)
print(resp)
const response = await client.ccr.putAutoFollowPattern({
  name: "<auto_follow_pattern_name>",
  remote_cluster: "<remote_cluster>",
  leader_index_patterns: ["<leader_index_pattern>"],
  leader_index_exclusion_patterns: ["<leader_index_exclusion_pattern>"],
  follow_index_pattern: "<follow_index_pattern>",
});
console.log(response);
PUT /_ccr/auto_follow/<auto_follow_pattern_name>
{
  "remote_cluster" : "<remote_cluster>",
  "leader_index_patterns" :
  [
    "<leader_index_pattern>"
  ],
  "leader_index_exclusion_patterns":
  [
    "<leader_index_exclusion_pattern>"
  ],
  "follow_index_pattern" : "<follow_index_pattern>"
}

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须对领导者索引模式具有 readmonitor 索引权限。 您还必须在包含追随者索引的集群上具有 manage_ccr 集群权限。 有关更多信息,请参阅安全权限

描述

编辑

此 API 根据请求体中指定的远程集群创建新的自动跟随模式的命名集合。 远程集群上新创建的,与任何指定模式匹配的索引将自动配置为追随者索引。 在创建自动跟随模式之前在远程集群上创建的索引,即使它们与该模式匹配也不会被自动跟随。

此 API 也可用于更新现有的自动跟随模式。 请注意,在更新自动跟随模式之前自动配置的追随者索引即使与新模式不匹配,也将保持不变。

路径参数

编辑
<auto_follow_pattern_name>
(必需,字符串) 自动跟随模式集合的名称。

查询参数

编辑
master_timeout
(可选,时间单位) 等待主节点的时间。 如果在超时到期之前主节点不可用,则请求将失败并返回错误。 默认为 30s。 也可以设置为 -1 表示请求永远不应超时。

请求体

编辑
remote_cluster
(必需,字符串) 包含要匹配的领导者索引的远程集群
leader_index_patterns
(可选,数组) 一个简单索引模式的数组,用于匹配由 remote_cluster 字段指定的远程集群中的索引。
leader_index_exclusion_patterns
(可选,数组) 一个简单索引模式的数组,可用于排除要自动跟随的索引。 远程集群中名称与一个或多个 leader_index_patterns 和一个或多个 leader_index_exclusion_patterns 匹配的索引将不会被跟随。
follow_index_pattern
(可选,字符串) 追随者索引的名称。 模板 {{leader_index}} 可用于从领导者索引的名称派生追随者索引的名称。 当跟随数据流时,follow_index_pattern 将不仅用于重命名领导者索引,还将用于重命名包含领导者索引的数据流。 例如,一个名为 logs-mysql-default 的数据流,其支持索引为 .ds-logs-mysql-default-2022-01-01-000001,并且 follow_index_pattern{{leader_index}}_copy,会将数据流复制为 logs-mysql-default_copy,并将支持索引复制为 .ds-logs-mysql-default_copy-2022-01-01-000001
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"
      }
    }
  ]
}

示例

编辑

此示例创建一个名为 my_auto_follow_pattern 的自动跟随模式

resp = client.ccr.put_auto_follow_pattern(
    name="my_auto_follow_pattern",
    remote_cluster="remote_cluster",
    leader_index_patterns=[
        "leader_index*"
    ],
    follow_index_pattern="{{leader_index}}-follower",
    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)
const response = await client.ccr.putAutoFollowPattern({
  name: "my_auto_follow_pattern",
  remote_cluster: "remote_cluster",
  leader_index_patterns: ["leader_index*"],
  follow_index_pattern: "{{leader_index}}-follower",
  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 /_ccr/auto_follow/my_auto_follow_pattern
{
  "remote_cluster" : "remote_cluster",
  "leader_index_patterns" :
  [
    "leader_index*"
  ],
  "follow_index_pattern" : "{{leader_index}}-follower",
  "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"
}

API 返回以下结果

{
  "acknowledged" : true
}