request_body
编辑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_prefix 或 migration_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 选项来执行自动切片重新索引。