中的远程重建索引Amazon Elasticsearch Service - Amazon Elasticsearch Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

中的远程重建索引Amazon Elasticsearch Service

远程重建索引可让您将索引从远程集群复制到本地集群。您可以从任何 Amazon ES 域或自管理 Elasticsearch 集群迁移索引。

远程重建索引要求本地域具有 Elasticsearch 6.7 或更高版本。远程域可以是任何版本。

Open Distro for Elasticsearch 文档reindex中提供了 操作的完整文档,包括详细步骤和支持的选项。

Prerequisites

远程重建索引具有以下要求:

  • 远程域必须可从本地域访问。对于驻留在 VPC 中的远程域,本地域必须有权访问 VPC。此过程因网络配置而异,但可能涉及连接到 VPN 或托管网络或使用代理服务器。要了解更多信息,请参阅 VPC 支持

  • 请求必须像任何其他 REST 请求一样由远程域授权。如果远程域是启用了 FGAC 的 Amazon ES 域,则您必须有权对本地域执行重建索引并读取远程域上的索引。有关更多安全注意事项,请参阅精细访问控制

  • 我们建议您在开始重建索引过程之前,先在本地域上创建具有所需设置的索引。

使用 Amazon ES 域远程重建索引

最基本的情况是,远程索引与您的本地域位于具有可公开访问的终端节点的同一区域,并且您已签署 IAM 凭证。

在远程域中指定要从其重建索引的源索引,并在本地域上指定希望重建索引的目标索引以:

POST <local-domain-endpoint>/_reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443" }, "index": "remote_index" }, "dest": { "index": "local_index" } }

您必须在远程域终端节点的末尾添加 443 进行验证检查。

要验证索引是否已复制到本地域,请执行以下操作:

GET <local-domain-endpoint>/local_index/_search

如果远程索引所在的区域中与您的本地域不同的区域,则传递其区域名称,如以下示例请求所示:

POST <local-domain-endpoint>/_reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443", "region": "eu-west-1" }, "index": "test_index" }, "dest": { "index": "local_index" } }

对于隔离区域(如 AWS GovCloud (US) 或中国区域),可能无法访问终端节点,因为在这些区域中无法识别您的 IAM 用户。

如果使用基本授权保护远程域,请指定用户名和密码:

POST <local-domain-endpoint>/_reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443", "username": "username", "password": "password" }, "index": "remote_index" }, "dest": { "index": "local_index" } }

如果远程域托管在 VPC 中,请使用可公开访问的终端节点配置代理。代理域必须具有由公有证书颁发机构签名的证书,而不是自签名证书。

使用非 Amazon ES 域的远程重建索引

如果远程索引位于 Amazon ES 外部(如在自管理 EC2 实例中),请将 external 参数指定为 true

POST <local-domain-endpoint>/_reindex { "source": { "remote": { "host": "https://remote_endpoint:443", "username": "username", "password": "password", "external": true }, "index": "remote_index" }, "dest": { "index": "local_index" } }

在这种情况下,仅支持使用用户名和密码的基本授权。

大型数据集的远程重建索引

远程重建索引将滚动请求发送到远程域并具有以下默认值:搜索上下文为 5 分钟,套接字超时为 30 秒,批处理大小为 1000。我们建议您调整这些参数以容纳您的数据。对于大型文档,请考虑较小的批处理大小和/或更长的超时。有关更多信息,请参阅滚动搜索

POST <local-domain-endpoint>/_reindex?pretty=true&scroll=10h&wait_for_completion=false { "source": { "remote": { "host": "https://remote_endpoint:443", "socket_timeout": "60m" }, "size": 100, "index": "remote_index" }, "dest": { "index": "local_index" } }

我们还建议将以下设置添加到本地索引以提高性能:

PUT local_index { "settings": { "refresh_interval": -1, "number_of_replicas": 0 } }

重建索引过程完成后,您可以设置所需的副本计数并删除刷新间隔设置。

仅重建您通过查询选择的文档子集的索引:

POST <local-domain-endpoint>/_reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443" }, "index": "remote_index", "query": { "match": { "field_name": "text" } } }, "dest": { "index": "local_index" } }

远程重建索引不支持切片,因此您无法对同一请求并行执行多个滚动操作。

远程重建索引设置

除了标准重建索引选项之外,Amazon ES 还支持以下选项。

选项 有效值 描述 必需
外部 Boolean 如果远程域不是 Amazon ES 域,请将 指定为 true
区域 字符串 如果远程域位于其他区域,请指定区域名称。