Reindex API は、1 つのインデックスから別のインデックスへ、完全なデータまたは特定の条件を満たすデータをコピーします。この処理は同一クラスター内でも、異なるクラスター間でも実行可能です。本トピックでは、Reindex API を使用して 1 つのクラスターから別のクラスターへデータを移行する方法について説明します。
制限事項
2 つのクラスターは、同一リージョンおよび同一ゾーンに配置されている必要があります。
デプロイメントコントロールモード: v2 コントロールモードから v3 へ、v2 クラスター間、および v3 クラスター間のクラスターデータの移行をサポートします。
クラスターには、クラウドネイティブ新規コントロール (v3) と基本コントロール (v2) という 2 種類のコントロールデプロイメントモードがあります。

クラスターのバージョン:同一メジャーバージョン間でのデータ移行(下位バージョンから上位バージョンへの移行)をサポートしています。たとえば、8.15.1 から 8.15.1 へのデータ移行が可能です。7.7.1 から 8.15.1 のように、メジャーバージョンを跨いだデータ移行は行わないでください。
事前準備
本例では、ES_1 および ES_2 の両クラスターが 8.15.1 ベクター強化版です。目的は、Reindex API を使用して ES_2 から ES_1 へデータを移行することです。移行を開始する前に、以下の事前準備を完了してください。
テストデータの準備
ES_2 でインデックスを作成し、テストデータを挿入します:
PUT /product_info { "settings": { "number_of_shards": 5, "number_of_replicas": 1 }, "mappings": { "properties": { "productName": { "type": "text", "analyzer": "ik_smart" }, "annual_rate":{ "type":"keyword" }, "describe": { "type": "text", "analyzer": "ik_smart" } } } }この例では、product_info という名前のインデックスを作成し、productName、annual_rate、describe の各フィールドを含めています。正常に作成された場合、以下の結果が返されます。
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "product_info" }6 件のテストデータを挿入します:
POST /product_info/_bulk {"index":{}} {"productName":"ファンド A","annual_rate":"3.2200%","describe":"180 日間固定運用型ファンド、最低投資額 20,000 円、安定した収益、メッセージプッシュの自己選択可能"} {"index":{}} {"productName":"ファンド B","annual_rate":"3.1100%","describe":"90 日間固定運用型ファンド、最低投資額 10,000 円、毎日の収益通知をプッシュ"} {"index":{}} {"productName":"ファンド C","annual_rate":"3.3500%","describe":"270 日間固定運用型ファンド、最低投資額 40,000 円、毎日の収益を即時プッシュ"} {"index":{}} {"productName":"ファンド D","annual_rate":"3.1200%","describe":"90 日間固定運用型ファンド、最低投資額 12,000 円、毎日の収益通知をプッシュ"} {"index":{}} {"productName":"ファンド E","annual_rate":"3.0100%","describe":"30 日間固定運用型ファンドのおすすめ、最低投資額 8,000 円、毎日の収益通知をプッシュ"} {"index":{}} {"productName":"ファンド F","annual_rate":"2.7500%","describe":"人気の短期ファンド、3 日間短期運用、手数料無料、最低投資額 500 円、ショートメッセージで収益通知を受信"}ES_1 で、ES_2 から移行するデータを格納するためのインデックスを作成します:
PUT dest { "settings": { "number_of_shards": 5, "number_of_replicas": 1 } }
NLB および PrivateLink を使用したクラスター間のプライベートネットワーク接続の確立
クラスターのセキュリティを強化するため、同一 VPC 内または異なる VPC 間のクラスターはネットワーク分離されています。NLB および PrivateLink を使用して、クラスター間のプライベートネットワーク(VPC)接続を確立できます。
以下の図に示すように、2 つの ES クラスターが同一 VPC にデプロイされています。ユーザーの VPC を使用してエンドポイントサービスを作成し、ES_1 のクラスターでプライベートネットワーク接続を構成してエンドポイントを取得した後、そのエンドポイントをエンドポイントサービスに関連付けることで、2 つのクラスター間のプライベートネットワーク接続を確立します。
エンドポイントサービス:他の VPC がエンドポイントを作成することで PrivateLink 接続を確立できるようにするサービスです。関連するサービスリソースは手動で作成します。
エンドポイント:エンドポイントサービスに関連付けられたリソースです。VPC を介して外部サービスへのプライベートネットワークアクセスのためのネットワーク接続を確立します。Alibaba Cloud ES では、インスタンスの PrivateLink を構成すると、ES のネットワーク環境内で自動的にエンドポイントが作成されます。
構成手順については、「NLB および PrivateLink を使用した Alibaba Cloud ES クラスター間のプライベートネットワークピアリング」をご参照ください。手順 1、2、3 を完了してください。
構成が正常に完了すると、以下のようなインターフェイスが表示されます。

Reindex API ホワイトリストの設定
クロスクラスター間のデータ移行のセキュリティを確保するため、ES_2 クラスターのプライベートネットワーク接続アドレスおよび通信ポート番号を、ES_1 の Reindex API ホワイトリストに追加する必要があります。
ES_1 の ページに移動します。次に、プライベート接続の設定 をクリックし、さらに 編集 をクリックします。サイドバーの プライベート接続の設定 で、対象の エンドポイント ID をクリックします。

VPC コンソールの エンドポイント接続 タブで、エンドポイント ID の横にある
アイコンをクリックして、対応するドメイン名を確認します。重要Reindex API ホワイトリストを設定する際には、ドメイン名からゾーン情報を削除する必要があります。
たとえば、完全なドメイン名が「ep-bp1****************-cn-hangzhou-i.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com」の場合、ゾーン情報「-cn-hangzhou-i」を削除して、最終的なドメイン名「ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com」を取得します。

ES_1 の YML ファイルで Reindex API ホワイトリストを設定します。ホワイトリストには、エンドポイントのドメイン名および通信ポートを含める必要があります。
reindex: remote: whitelist: >- ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200
Reindex API を呼び出してデータを移行
ES_1 で、Kibana コンソールにログインします。
Dev Tools>Console で、Reindex API を呼び出してデータを移行します。
POST _reindex { "source": { "remote": { "host": "http://ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200", "username": "elastic", "password": "xxx-xxxx123!" }, "index": "product_info", "query": { "match": { "productName": "wealth management product" } } }, "dest": { "index": "dest" } }カテゴリ
パラメーター
説明
source
remote
リモートクラスターを指定します。本例では ES_2 です。
host
ES_2 クラスターのエンドポイントで、以下の要素を含みます。
アクセスプロトコル:クラスターの 基本情報 ページで、現在使用中のアクセスプロトコルを確認します。
重要セキュリティを確保するため、パスワードをプレーンテキストで送信しないよう、HTTPS プロトコルを使用してください。「HTTPS プロトコル」ドキュメントを参照して、HTTPS プロトコルを有効化してください。
ドメイン名:ES_2 クラスターのプライベート接続アドレスで、Reindex ホワイトリスト に設定したドメイン名と一致している必要があります。
通信ポート:固定値 9200 です。
username
クラスターのデフォルトユーザー名は elastic です。
password
ユーザー名に対応するパスワードです。
パスワードはクラスター作成時に設定されます。パスワードを忘れてしまった場合は、パスワードをリセット できます。
index
リモートクラスター内のソースインデックスです。
query
クエリ構文を使用して、移行対象のデータを指定します。
この例では、ES_2 クラスターのインデックスの `productName` フィールドに「資産運用商品」が含まれるデータが、ES_1 クラスターに移行されます。
dest
index
移行されたデータを格納する先のクラスター内のインデックスです。
正常に実行された場合の期待される結果:
{ "took": 211, "timed_out": false, "total": 6, "updated": 6, "created": 0, "deleted": 0, "batches": 1, "version_conflicts": 0, "noops": 0, "retries": { "bulk": 0, "search": 0 }, "throttled_millis": 0, "requests_per_second": -1, "throttled_until_millis": 0, "failures": [] }_search API を呼び出して、移行結果を確認します。
GET dest/_search期待される結果:
{ "took": 6, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "dest", "_id": "n9kyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "ファンド D", "annual_rate": "3.1200%", "describe": "90 日間固定運用型ファンド、最低投資額 12,000 円、毎日の収益通知をプッシュ" } }, { "_index": "dest", "_id": "nNkyqpcBCRuDZhswJCpG", "_score": 1, "_source": { "productName": "ファンド A", "annual_rate": "3.2200%", "describe": "180 日間固定運用型ファンド、最低投資額 20,000 円、安定した収益、メッセージプッシュの自己選択可能" } }, { "_index": "dest", "_id": "ndkyqpcBCRuDZhswJCpG", "_score": 1, "_source": { "productName": "ファンド B", "annual_rate": "3.1100%", "describe": "90 日間固定運用型ファンド、最低投資額 10,000 円、毎日の収益通知をプッシュ" } }, { "_index": "dest", "_id": "ntkyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "ファンド C", "annual_rate": "3.3500%", "describe": "270 日間固定運用型ファンド、最低投資額 40,000 円、毎日の収益を即時プッシュ" } }, { "_index": "dest", "_id": "oNkyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "ファンド E", "annual_rate": "3.0100%", "describe": "30 日間固定運用型ファンドのおすすめ、最低投資額 8,000 円、毎日の収益通知をプッシュ" } }, { "_index": "dest", "_id": "odkyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "ファンド F", "annual_rate": "2.7500%", "describe": "人気の短期ファンド、3 日間短期運用、手数料無料、最低投資額 500 円、ショートメッセージで収益通知を受信" } } ] } }