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"
当然,请确保替换正确的 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_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"
当然,请确保替换正确的 host、IP 或端口。
其他客户端连接参数也可以以操作选项的形式提供
其他场景和选项
编辑重新索引 API 支持的几乎所有场景都受 request_body 支持,包括(但不限于)
- 管道
- 脚本
- 查询
- 冲突解决
- 按计数限制
- 版本控制
- 重新索引操作类型(例如,仅创建)
有关这些内容以及更多内容,请阅读 https://elastic.ac.cn/guide/en/elasticsearch/reference/8.15/docs-reindex.html
值得注意的例外包括
- 您无法手动指定切片。而是使用 slices 选项进行自动切片重新索引。