

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

# 第 4 阶段 – 数据迁移
<a name="stage-4-data-migration"></a>

现在您的目标环境已准备就绪，您可以实施在规划阶段选择的数据迁移策略。

本节介绍四种不同模式的实现步骤：
+ [通过快照构建](build-from-snapshot.md)
+ [通过来源构建](build-from-source.md)
+ [远程重新编制索引](remote-reindexing.md)
+ [使用 Logstash](logstash.md)

# 1. 通过快照构建
<a name="build-from-snapshot"></a>

当您使用快照恢复方法时，可以将数据从源 Elasticsearch 或集群复制 OpenSearch 到目标亚马逊服务域。 OpenSearch 

总体而言，快照恢复过程包括以下步骤：

1. 从现有集群拍摄必要数据（索引）的快照，并将快照上传到 S3 存储桶。

1. 创建亚马逊 OpenSearch 服务域名。

1. 向 Amazon S OpenSearch ervice 授予访问存储桶的权限，并向您的用户账户授予使用快照的权限。创建快照存储库并将其指向您的存储桶。

1. 在 Amazon OpenSearch 服务域上恢复快照。

1. 将您的客户端应用程序指向 Amazon OpenSearch 服务域。

1. 创建索引状态管理（ISM）策略以配置保留（可选）。

快照为增量快照。因此，可以以增量方式运行和恢复快照。通过使用快照，您可以将数据批量提取为存储系统（例如 Amazon S3）上的文件。然后，您可以使用 `_restore` API 操作将这些文件加载在目标环境中。这样就无需重新编制索引（很耗时），还可以减少网络流量。

## 快照注意事项
<a name="snapshot-considerations"></a>

使用快照恢复方法时，请考虑以下几点：
+ 恢复索引时无法搜索或重新编制索引。但是，您可以在拍摄快照的同时搜索和重新编制索引。
+ 源和目标 Elasticsearch 或 OpenSearch 版本必须兼容。在以下位置创建的索引的快照：
  + 5.x 可以恢复到 6.x
  + 2.x 可以恢复到 5.x
  + 1.x 可以恢复到 2.x
+ 由于这是对 Elasticsearch 或 OpenSearch 快照的 point-in-time恢复，因此源集群中的后续更改不会复制到目标 Amazon S OpenSearch ervice 域中。在恢复完成之前，您可以停止将数据提取到源 Elasticsearch 或 OpenSearch集群，也可以重复几次快照还原过程。由于快照是增量快照，因此只会复制更改，并在目标环境中恢复，所需时间比第一次恢复更短。成功完成恢复后，您可以将摄取应用程序指向 Amazon S OpenSearch ervice 域。
+ 默认情况下，拍摄快照包括集群状态和所有索引的快照。从 Elasticsearch 迁移时，您可能需要使用中的 ISM 功能在目标环境中创建等效的索引生命周期策略。 OpenSearch亚马逊服务不支持 Elasticsearch 索引生命周期管理 (ILM)。 OpenSearch 
+ 您无法将快照还原到早期版本的 Elasticsearch 或。 OpenSearch例如，您无法将 7.10 版快照恢复到 7.9 版。同样，您无法将快照从 Elasticsearch 7.11 或更高版本恢复到亚马逊 OpenSearch服务域。如果您已将自行管理的 Elasticsearch 环境迁移到版本 7.11 或更高版本，则可以使用 Logstash 从 Elasticsearch 集群加载数据并将其写入域中。 OpenSearch
+ 您可以将快照导出到名为存储库的指定存储位置。Elasticsearch 或者在存储库中 OpenSearch 创建了许多文件。您无法修改或删除这些文件。这样做可能会造成不一致或导致恢复过程失败。

# 2. 通过来源构建
<a name="build-from-source"></a>

如前所述，从源头构建是一种无需从当前 Elasticsearch 或 OpenSearch 环境迁移数据的方法。相反，您可以直接从您的日志、产品目录数据来源或内容来源在目标域中构建索引。

有两个选项可用于从源构建。您选择的选项取决于您的数据类型：
+ 使用 AWS Database Migration Service — 如果您的数据源是关系数据库管理系统 (RDBMS)，并且数据源受 AWS Database Migration Service (AWS DMS) 支持，则可以使用 AWS DMS 将数据从您的数据源复制到目标亚马逊服务域。 OpenSearch AWS DMS 支持完全加载和更改数据捕获（CDC）选项。在满载选项中，AWS DMS 任务将源数据库表中的所有数据复制到目标 OpenSearch 索引。您可以使用默认映射或提供自定义映射配置。在 CDC 选项中，AWS DMS 首先将源表记录的完整副本复制到目标 OpenSearch 索引中。然后，它捕获更改的数据（更新和插入）并将其复制到 OpenSearch索引中。有关更多信息，请参阅博客文章 [Introducing Amazon Elasticsearch Service as a target in AWS Database Migration Service](https://aws.amazon.com/blogs/database/introducing-amazon-elasticsearch-service-as-a-target-in-aws-database-migration-service/) 和 [Scale Amazon Elasticsearch Service for AWS Database Migration Service migrations](https://aws.amazon.com/blogs/database/scale-amazon-elasticsearch-service-for-aws-database-migration-service-migrations/)。
+ 通过文档来源构建：如果您的数据来源不是 RDBMS 或不受 AWS DMS 支持，您可能需要使用开源工具或开源工具和 AWS 服务的组合来创建自定义解决方案。必须先将源数据转换为 JSON 文档，然后才能将其加载进去 OpenSearch。如果您已经设置了从源到当前 Elasticsearch 或 OpenSearch 环境的管道，则可以将这些数据管道指向这些数据管道，并对客户端库 OpenSearch 进行适当的更改，以及（如果需要）在 Amazon S OpenSearch ervice 域中的索引中更改数据模型。通过来源构建索引时，请记住以下注意事项：
  + 文档的位置：这些文档可能已经存在于 AWS 云、Amazon S3 等对象存储中，或者可能存储在本地存储位置（例如文件系统）中。
  + 文档的格式 — 文档可能已经采用 JSON 格式，可以随时收录到亚马逊 OpenSearch服务域中，或者可能需要清理、处理并格式化为 JSON，然后才能将其提取到亚马逊 OpenSearch 服务域中。

通过来源构建包含以下概要步骤：

1. 在 Amazon OpenSearch 服务域中定义索引映射和设置。

1. 从文档来源中提取数据并将其复制到对象存储位置，例如 Amazon S3。您可以使用开源工具（例如 Logstash）、AWS 服务客户端（例如 Amazon Kinesis 代理）、第三方商业工具或自定义程序。

1. 配置开源工具（例如 Logstash 或 Fluent Bit）或原生 AWS 服务（例如 AWS Lambda 或 AWS DMS），将数据转换为 JSON 文档，然后定期或连续地将其从对象存储加载到亚马逊服务域。 OpenSearch 

有关更多信息，请参阅将[流数据加载到 Amazon OpenSearch 服务](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/integrations.html)。

# 3. 远程重新编制索引
<a name="remote-reindexing"></a>

在这种情况下，将使用重新索引文档 API 操作将源自管理 Elasticsearch 或 OpenSearch集群的[索引迁](https://docs.opensearch.org/latest/api-reference/document-apis/reindex/)移到亚马逊 OpenSearch 服务域中。您可以使用重新索引文档 API 操作从现有的 Elasticsearch 或索引创建索引。 OpenSearch 现有索引可以位于运行重新编制索引操作的同一个集群中，也可以位于远程集群中。Amazon S OpenSearch ervice 支持对远程集群使用重新索引文档 API 操作。您可以将自管理 Elasticsearch 中的索引重新编入亚马逊服务中的索引。 OpenSearch 

远程重新索引支持远程 Elasticsearch 集群的 Elasticsearch 1.5 及更高版本，本地域支持 OpenSearch 亚马逊服务 6.7 及更高版本。有关更多信息，请参阅博客文章 [Migrate data into Amazon ES using remote reindex](https://aws.amazon.com/blogs/big-data/migrate-data-into-amazon-es-using-remote-reindex/)。博客文章提到了亚马逊 Elasticsearch，但该指南同样适用于亚马逊 OpenSearch 服务域名。

# 4. 使用 Logstash
<a name="logstash"></a>

[Logstash](https://www.elastic.co/guide/en/logstash/current/index.html) 是一种开源数据处理工具，可以从来源收集数据、执行转换或筛选，并将数据发送到一个或多个目标。为了向亚马逊 OpenSearch 服务域写入数据，Logstash 提供了以下插件：
+ logstash-input-elasticsearch
+ logstash-input-opensearch
+ logstash-output-opensearch

有关更多信息，请参阅[使用 Logstash 将数据加载到亚马逊 OpenSearch 服务](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-logstash.html)以及[介绍 logstash-input-opensearch插件](https://opensearch.org/blog/community/2022/05/introducing-logstash-input-opensearch-plugin-for-opensearch/)的 OpenSearch 博客文章。 OpenSearch