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"

当然,请确保替换正确的 host、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"

当然,请确保替换正确的 host、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"

当然,请确保替换正确的 host、IP 或端口。

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

其他场景和选项

编辑

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

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

有关这些内容以及更多内容,请阅读 https://elastic.ac.cn/guide/en/elasticsearch/reference/8.15/docs-reindex.html

值得注意的例外包括

  • 您无法手动指定切片。而是使用 slices 选项进行自动切片重新索引。