加载中

使用 reindex API 迁移 Elasticsearch 数据

通过 reindex API,您可以便捷地将 Elasticsearch 文档从一个部署中的源索引、数据流或别名复制到另一个部署。

重要提示

本指南以使用 远程 reindex (reindex from remote) 示例中显示的远程主机参数,将完整索引从 Elastic Cloud Hosted 部署重新索引到 Elastic Cloud Serverless 项目为例。这些步骤也适用于其他部署类型。当您将数据复制到 Serverless 以外的部署类型时,需要注意 其他注意事项

对于更高级的用例(包括使用脚本或预处理管道(ingest pipelines)进行数据修改),请参阅 重新索引索引示例reindex API 文档。

  • 一个包含待迁移数据的 Elastic Cloud Hosted 部署

  • 一个已配置并正在运行的 Elastic Cloud Serverless 项目

  • 一个用于对 Elastic Cloud Hosted 部署进行身份验证的 API 密钥

    可以使用基本身份验证代替 API 密钥,但建议使用 API 密钥,因为它是一种更安全的选择。

重要提示

Kibana 资产必须使用 Kibana 导出/导入 API 单独迁移或手动重新创建。有关迁移不同类型 Elasticsearch 数据的详细信息,请参阅 迁移选项

在您开始重新索引数据之前,必须准备好索引模板、数据流定义和数据生命周期设置。但是,如果您配置了任何 预处理管道,通常最好在数据迁移之后添加它们,以避免重新转换那些在摄取到源部署时就已经转换过的数据。如果数据是幂等的,则无需担心重新转换问题。

仪表板和可视化组件等视觉组件可以在您迁移数据后进行迁移。

以下步骤将指导您定位 Elastic Cloud Hosted 部署中的源索引和 Elasticsearch 端点,然后从您的 Serverless 项目运行远程 reindex,以便将文档复制到目标索引中。

  1. 在您的 Elastic Cloud Hosted 部署中

    1. 导航到部署主页并复制 Elasticsearch 端点。

    2. 打开 Kibana 并转到导航菜单中的 索引管理 (Index Management) 页面,或使用 全局搜索字段

    3. 使用搜索字段确定要迁移的索引。

  2. 在您的 Serverless 项目中

    1. 打开开发工具 控制台 (Console)

    2. 调用 reindex API 迁移您的索引。如果您有多个索引需要迁移,则应为每个索引分别执行一次调用。

      示例:使用 API 密钥从 Elastic Cloud Hosted 部署重新索引到 Serverless 项目

      POST _reindex
      {
        "source": {
          "remote": {
            "host": "https://<SERVERLESS_HOST_URL>:443",
            "api_key": "<ECH_API_KEY>"
          },
          "index": "<SOURCE_INDEX>"
        },
        "dest": {
          "index": "<DESTINATION_INDEX>"
        }
      }
      		
      1. 您 Serverless 项目的 URL。这是您在第 1 步中复制的 Elasticsearch 端点。如果您要迁移到例如 Elastic Cloud Hosted 集群,则可以相应地修改远程主机地址。
      2. 用于验证到您的 Elastic Cloud Hosted 部署连接的 API 密钥。
      3. 要从您的 Elastic Cloud Hosted 部署中复制的源索引。
      4. 您 Serverless 项目中的目标索引。
    3. 验证新索引是否存在

      GET INDEX-NAME/_search?pretty
      		
    4. 如果您不打算从远程重新索引更多数据,并且配置了 reindex.remote.whitelist 用户设置,现在可以删除该设置。

本页演示了如何将数据从 Elastic Cloud Hosted 部署复制到 Serverless。当您使用 reindex API 在其他部署类型之间复制数据时,有几点需要考虑。

如果您是从使用非公开受信任 TLS 证书(包括自签名证书和由私有证书颁发机构 (CA) 签名的证书)的自托管集群进行迁移,请参阅我们的指南 使用私有 CA 从自托管集群进行重新索引

目标部署必须能够访问您的原始源集群才能执行 reindex 操作。当您迁移到 Serverless 时,对所有 Elastic Cloud Hosted 端点的访问会自动允许。对于迁移到其他部署类型,访问权限由 Elasticsearch reindex.remote.whitelist 用户设置控制。

默认情况下,匹配 ["*.io:*", "*.com:*"] 模式的域是允许的,因此如果您的远程主机 URL 匹配该模式,则无需显式定义 reindex.remote.whitelist

否则,如果您的远程端点不包含在默认模式中,请调整设置以将远程 Elasticsearch 集群添加为允许的主机

  1. 在部署菜单中,转到 Edit 页面。

  2. Elasticsearch 部分中,选择 管理用户设置和扩展 (Manage user settings and extensions)。对于已有用户设置的部署,您可能需要展开每个节点类型的 编辑 elasticsearch.yml (Edit elasticsearch.yml) 展开箭头。

  3. 添加以下 reindex.remote.whitelist: [REMOTE_HOST:PORT] 用户设置,其中 REMOTE_HOST 是匹配您正在从中进行重新索引的远程 Elasticsearch 主机 URL 的模式,PORT 是主机端口号。不要包含 https:// 前缀。

    如果您覆盖了该参数,它会替换默认值: ["*.io:*", "*.com:*"]。如果您仍然希望允许这些模式,则需要在值中显式指定它们。

    例如

    reindex.remote.whitelist: ["*.us-east-1.aws.found.io:9243", "*.com:*"]

  4. 保存您的更改。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.