

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 階段 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 叢集複製資料，以鎖定 Amazon OpenSearch Service 網域。

一般而言，快照還原程序包含下列步驟：

1. 從現有叢集取得必要資料的快照 （索引），並將快照上傳至 S3 儲存貯體。

1. 建立 Amazon OpenSearch Service 網域。

1. 授予 Amazon OpenSearch Service 存取儲存貯體的許可，並授予您的使用者帳戶使用快照的許可。建立快照儲存庫，並將其指向您的儲存貯體。

1. 在 Amazon OpenSearch Service 網域上還原快照。

1. 將您的用戶端應用程式指向 Amazon OpenSearch Service 網域。

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 OpenSearch Service 網域。您可以停止將資料擷取至來源 Elasticsearch 或 OpenSearch 叢集，直到還原完成，或者您可以重複快照還原程序幾次。由於快照是增量的，因此只會在比第一次還原更短的時間，在目標環境中複製和還原變更。還原成功完成後，您將擷取應用程式指向 Amazon OpenSearch Service 網域。
+ 根據預設，快照包括叢集狀態和所有索引的快照。從 Elasticsearch 遷移時，您可能需要使用 OpenSearch 中的 ISM 功能，在目標環境中建立同等的索引生命週期政策。Amazon OpenSearch Service 不支援 Elasticsearch Index Lifecycle Management (ILM)。
+ 您無法將快照還原至舊版的 Elasticsearch 或 OpenSearch。例如，您無法將 7.10 版的快照還原至 7.9 版。同樣地，您無法將快照從 Elasticsearch 7.11 或更新版本還原至 Amazon OpenSearch Service 網域。如果您已將自我管理的 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 將資料來源中的資料複製到目標 Amazon OpenSearch Service 網域。AWS DMS 支援完全載入和變更資料擷取 (CDC) 選項。在完全載入選項中，AWS DMS 任務會將來源資料庫資料表中的所有資料複製到目標 OpenSearch 索引。您可以使用預設映射或提供自訂映射組態。在 CDC 選項中，AWS DMS 會先將來源資料表記錄的完整複本複製到目標 OpenSearch 索引。然後，它會擷取變更的資料 （更新和插入），並將其複製到 OpenSearch 索引。如需詳細資訊，請參閱部落格文章[介紹 Amazon Elasticsearch Service 作為 AWS Database Migration Service 中的目標](https://aws.amazon.com/blogs/database/introducing-amazon-elasticsearch-service-as-a-target-in-aws-database-migration-service/)，以及[擴展 Amazon Elasticsearch Service for AWS Database Migration Service 遷移](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 OpenSearch Service 網域中的索引中進行適當的變更和 （如果需要） 資料模型變更。從來源建置索引時，請記住下列考量事項：
  + 文件的位置 – 文件可能已在 AWS 雲端、Amazon S3 等物件儲存中可用，也可能存放在檔案系統等內部部署儲存位置。
  + 文件的格式 – 文件可能已經採用 JSON 格式，準備好導入 Amazon OpenSearch Service 網域，或者可能需要先清理、處理和格式化為 JSON，才能導入 Amazon OpenSearch Service 網域。

從來源建置包含下列高階步驟：

1. 在 Amazon OpenSearch Service 網域中定義索引映射和設定。

1. 從文件來源擷取資料，並將其複製到物件儲存位置，例如 Amazon S3。您可以使用開放原始碼工具 （例如 Logstash)、AWS 服務用戶端 （例如 Amazon Kinesis Agent)、第三方商業工具或自訂程式。

1. 設定開放原始碼工具 （例如 Logstash 或 Fluent Bit) 或原生 AWS 服務 （例如 AWS Lambda 或 AWS DMS)，將資料轉換為 JSON 文件，並定期或持續從物件存放區載入 Amazon OpenSearch Service 網域。

如需詳細資訊，請參閱將[串流資料載入 Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/integrations.html)。

# 3. 遠端重新索引
<a name="remote-reindexing"></a>

在此情況下，來源自我管理 Elasticsearch 或 OpenSearch 叢集的索引會使用[重新索引文件 API 操作](https://docs.opensearch.org/latest/api-reference/document-apis/reindex/)遷移至 Amazon OpenSearch Service 網域。您可以使用重新索引文件 API 操作，從現有的 Elasticsearch 或 OpenSearch 索引建立索引。現有的索引可以位於執行重新索引操作的相同叢集中，也可以位於遠端叢集中。Amazon OpenSearch Service 支援搭配遠端叢集使用重新索引文件 API 操作。您可以從自我管理 Elasticsearch 中的索引重新索引至 Amazon OpenSearch Service 中的索引。

遠端重新索引支援遠端 Elasticsearch 叢集的 Elasticsearch 1.5 和更新版本，以及本機網域的 Amazon OpenSearch Service 6.7 和更新版本。如需詳細資訊，請參閱部落格文章[使用遠端重新索引將資料遷移至 Amazon ES](https://aws.amazon.com/blogs/big-data/migrate-data-into-amazon-es-using-remote-reindex/)。部落格文章是指 Amazon Elasticsearch，但指引同樣適用於 Amazon OpenSearch Service 網域。

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

[Logstash](https://www.elastic.co/guide/en/logstash/current/index.html) 是一種開放原始碼資料處理工具，可從來源收集資料、執行轉換或篩選，以及將資料傳送至一或多個目的地。若要將資料寫入 Amazon OpenSearch Service 網域，Logstash 會提供下列外掛程式：
+ logstash-input-elasticsearch
+ logstash-input-opensearch
+ logstash-output-opensearch

如需詳細資訊， 請參閱[使用 Logstash 將資料載入 Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-logstash.html) 和 OpenSearch 部落格文章[介紹適用於 OpenSearch 的 logstash-input-opensearch 外掛程式](https://opensearch.org/blog/community/2022/05/introducing-logstash-input-opensearch-plugin-for-opensearch/)。