request_body编辑

此设置仅由 重新索引 操作使用。

手动索引选择编辑

request_body 选项是重新索引操作的核心。在这里,使用 YAML 语法,您可以重新创建发送到 Elasticsearch 的主体,如 官方文档 中所述。您可以像此示例一样手动选择索引

actions:
  1:
    description: "Reindex index1 into index2"
    action: reindex
    options:
      wait_interval: 9
      max_wait: -1
      request_body:
        source:
          index: index1
        dest:
          index: index2
    filters:
    - filtertype: none

您还可以通过在可接受的 YAML 语法中创建列表来选择多个要重新索引的索引

actions:
  1:
    description: "Reindex index1,index2,index3 into new_index"
    action: reindex
    options:
      wait_interval: 9
      max_wait: -1
      request_body:
        source:
          index: ['index1', 'index2', 'index3']
        dest:
          index: new_index
    filters:
    - filtertype: none

必须至少设置一个 none 过滤器,否则操作将失败。不用担心。如果您已手动指定了索引,那么只有这些索引会被重新索引。

过滤器选定的索引编辑

Curator 允许您通过将 source 索引设置为 REINDEX_SELECTION 来使用 filters 部分找到的所有索引,如下所示

actions:
  1:
    description: >-
      Reindex all daily logstash indices from March 2017 into logstash-2017.03
    action: reindex
    options:
      wait_interval: 9
      max_wait: -1
      request_body:
        source:
          index: REINDEX_SELECTION
        dest:
          index: logstash-2017.03
    filters:
    - filtertype: pattern
      kind: prefix
      value: logstash-2017.03.

从远程重新索引编辑

您也可以从远程重新索引

actions:
  1:
    description: "Reindex remote index1 to local index1"
    action: reindex
    options:
      wait_interval: 9
      max_wait: -1
      request_body:
        source:
          remote:
            host: http://otherhost:9200
            username: myuser
            password: mypass
          index: index1
        dest:
          index: index1
    filters:
    - filtertype: none

必须至少设置一个 none 过滤器,否则操作将失败。不用担心。只有您在 source 中指定的索引会被重新索引。

Curator 将创建到上面示例中作为 host 键指定的宿主的连接。它将确定要连接的端口,以及是否通过解析在那里输入的 URL 来使用 SSL。由于此 host 特别由 Elasticsearch 使用,而 Curator 正在建立单独的连接,因此务必确保 Curator 您的 Elasticsearch 集群都能够访问远程主机。

如果您没有将远程集群列入白名单,您将无法重新索引。这可以通过将以下行添加到您的 elasticsearch.yml 文件中来完成

reindex.remote.whitelist: remote_host_or_IP1:9200, remote_host_or_IP2:9200

或者通过在启动 Elasticsearch 时将此标志添加到命令行

bin/elasticsearch -Edefault.reindex.remote.whitelist="remote_host_or_IP:9200"

当然,请务必替换正确的宿主、IP 或端口。

其他客户端连接参数也可以以操作选项的形式提供

从远程重新索引,并使用过滤器选定的索引编辑

您甚至可以从远程重新索引,并使用远程端的过滤器选定的索引

actions:
  1:
    description: >-
      Reindex all remote daily logstash indices from March 2017 into local index
      logstash-2017.03
    action: reindex
    options:
      wait_interval: 9
      max_wait: -1
      request_body:
        source:
          remote:
            host: http://otherhost:9200
            username: myuser
            password: mypass
          index: REINDEX_SELECTION
        dest:
          index: logstash-2017.03
      remote_filters:
      - filtertype: pattern
        kind: prefix
        value: logstash-2017.03.
    filters:
    - filtertype: none

即使您是从远程重新索引,您必须至少设置一个 none 过滤器,否则操作将失败。不用担心。只有您在 source 中指定的索引会被重新索引。

Curator 将创建到上面示例中作为 host 键指定的宿主的连接。它将确定要连接的端口,以及是否通过解析在那里输入的 URL 来使用 SSL。由于此 host 特别由 Elasticsearch 使用,而 Curator 正在建立单独的连接,因此务必确保 Curator 您的 Elasticsearch 集群都能够访问远程主机。

如果您没有将远程集群列入白名单,您将无法重新索引。这可以通过将以下行添加到您的 elasticsearch.yml 文件中来完成

reindex.remote.whitelist: remote_host_or_IP1:9200, remote_host_or_IP2:9200

或者通过在启动 Elasticsearch 时将此标志添加到命令行

bin/elasticsearch -Edefault.reindex.remote.whitelist="remote_host_or_IP:9200"

当然,请务必替换正确的宿主、IP 或端口。

其他客户端连接参数也可以以操作选项的形式提供

重新索引 - 迁移编辑

Curator 允许重新索引,特别是从远程重新索引,作为迁移路径。这对于将较旧的集群 (1.4+) 迁移到不同硬件上的新集群来说可能是一个非常有用的功能。它也可以成为一种有用的工具,用于以可自动化的方式将索引按顺序重新索引到更新的映射中。

通常,重新索引操作是从一个或多个索引到一个命名的索引。将 dest index 分配给 MIGRATION 会告诉 Curator 以不同的方式处理此重新索引操作。

如果它是本地重新索引,必须设置 migration_prefixmigration_suffix,或两者。这可以防止发生冲突和其他不良情况。通过分配前缀或后缀(或两者),您可以将任何本地索引重新索引到其新版本,但名称不同。

Reindex API 已经具有此功能。Curator 包含此相同的功能,以方便使用。

此示例将重新索引与 logstash-2017.03. 匹配的所有远程索引到本地集群,但保留原始索引名称,而不是将所有内容合并到单个索引中。在 Curator 内部,这会导致多个重新索引操作:每个索引一个。所有其他可用选项和设置都可用。

actions:
  1:
    description: >-
      Reindex all remote daily logstash indices from March 2017 into local
      versions with the same index names.
    action: reindex
    options:
      wait_interval: 9
      max_wait: -1
      request_body:
        source:
          remote:
            host: http://otherhost:9200
            username: myuser
            password: mypass
          index: REINDEX_SELECTION
        dest:
          index: MIGRATION
      remote_filters:
      - filtertype: pattern
        kind: prefix
        value: logstash-2017.03.
    filters:
    - filtertype: none

即使您是从远程重新索引,您必须至少设置一个 none 过滤器,否则操作将失败。不用担心。只有您在 source 中指定的索引会被重新索引。

Curator 将创建到上面示例中作为 host 键指定的宿主的连接。它将确定要连接的端口,以及是否通过解析在那里输入的 URL 来使用 SSL。由于此 host 特别由 Elasticsearch 使用,而 Curator 正在建立单独的连接,因此务必确保 Curator 您的 Elasticsearch 集群都能够访问远程主机。

如果您没有将远程集群列入白名单,您将无法重新索引。这可以通过将以下行添加到您的 elasticsearch.yml 文件中来完成

reindex.remote.whitelist: remote_host_or_IP1:9200, remote_host_or_IP2:9200

或者通过在启动 Elasticsearch 时将此标志添加到命令行

bin/elasticsearch -Edefault.reindex.remote.whitelist="remote_host_or_IP:9200"

当然,请务必替换正确的宿主、IP 或端口。

其他客户端连接参数也可以以操作选项的形式提供

其他场景和选项编辑

重新索引 API 支持的几乎所有场景都支持 request_body,包括(但不限于)

  • 管道
  • 脚本
  • 查询
  • 冲突解决
  • 按计数限制
  • 版本控制
  • 重新索引操作类型(例如,仅创建)

有关这些内容以及更多内容的更多信息,请访问 https://elastic.ac.cn/guide/en/elasticsearch/reference/8.13/docs-reindex.html

值得注意的例外包括

  • 您无法手动指定切片。相反,请使用 slices 选项来执行自动切片重新索引。