翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
リモート再インデックスを使用した Amazon OpenSearch Service インデックスの移行
リモート再インデックスを使用すると、Amazon OpenSearch Service ドメイン間でインデックスをコピーできます。インデックスは、任意の OpenSearch サービスドメイン、またはセルフマネージドクラスター OpenSearch と Elasticsearch クラスターから移行できます。
リモートドメインとインデックスは、データのソース (データのコピー元) のドメインとインデックスを意味します。ローカルドメインとインデックスは、データのターゲット (データのコピー先) のドメインとインデックスを意味します。
リモート再インデックス作成には、ローカルドメインで OpenSearch 1.0 以降、または Elasticsearch 6.7 以降が必要です。リモートドメインは、ローカルドメインと同じまたはそれより前のメジャーバージョンである必要があります。Elasticsearch バージョンは バージョンよりも OpenSearch低いとみなされ、Elasticsearch ドメインから OpenSearch ドメインにデータを再インデックスできます。同じメジャーバージョン内では、リモートドメインは任意のマイナーバージョンにすることができます。例えば、Elasticsearch 7.10.x から 7.9 へのリモート再インデックス作成はサポートされていますが、Elasticsearch 7.10.x OpenSearch への 1.0 はサポートされていません。
注記
このドキュメントでは、Amazon OpenSearch Service ドメイン間でデータを再インデックスする方法について説明します。詳細な手順やサポートされているオプションなど、 reindex
オペレーションの完全なドキュメントについては、 ドキュメントの「インデックスの再作成
トピック
前提条件
リモート再インデックスには、次の要件があります。
-
リモートドメインは、ローカルドメインからアクセス可能である必要があります。内に存在するリモートドメインの場合VPC、ローカルドメインは にアクセスできる必要がありますVPC。このプロセスはネットワーク設定によって異なりますが、おそらく VPNまたは マネージドネットワークへの接続、またはネイティブVPCエンドポイント接続の使用が含まれます。詳細については、「内で Amazon OpenSearch Service ドメインを起動する VPC」を参照してください。
-
リクエストは、他のRESTリクエストと同様にリモートドメインによって承認される必要があります。リモートドメインできめ細かなアクセスコントロールが有効になっている場合は、リモートドメインで再インデックスを実行し、リモートドメインでインデックスを読み取るための許可が必要です。セキュリティに関するその他の考慮事項については、「Amazon OpenSearch Service のきめ細かなアクセスコントロール」を参照してください。
-
再インデックスプロセスを開始する前に、ローカルドメインに目的の設定でインデックスを作成することをお勧めします。
-
ドメインでデータノードに T2 または T3 インスタンスタイプが使用されている場合、リモート再インデックスを使用することはできません。
OpenSearch サービスインターネットドメイン間でデータを再インデックスする
最も基本的なシナリオは、リモートインデックスがパブリックにアクセス可能なエンドポイントを持つローカルドメイン AWS リージョン と同じ にあり、IAMユーザーが認証情報に署名していることです。
リモートドメインから、再インデックス元のリモートインデックスと、再インデックス先のローカルインデックスを指定します。
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443" }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
検証チェックを行うには、リモートドメインのエンドポイントの末尾に 443 を追加する必要があります。
インデックスがローカルドメインにコピーされたことを確認するには、次のリクエストをローカルドメインに送信します。
GET local_index/_search
リモートインデックスがローカルドメインとは異なるリージョンにある場合は、次のサンプルリクエストのように、リージョン名を渡します。
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "region": "eu-west-1" }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
AWS GovCloud (US) や中国リージョンのように分離されたリージョンの場合、IAMユーザーがそれらのリージョンで認識されないため、エンドポイントにアクセスできない可能性があります。
リモートドメインが基本的な認証で保護されている場合は、ユーザーネームとパスワードを指定します。
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "username": "username
", "password": "password
" }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
リモートが にあるときに OpenSearch サービスドメイン間でデータを再インデックスする VPC
すべての OpenSearch サービスドメインは、独自の内部仮想プライベートクラウド (VPC) インフラストラクチャで構成されています。既存の OpenSearch サービス で新しいドメインを作成するとVPC、 のデータノードごとに Elastic Network Interface が作成されますVPC。
リモート再インデックスオペレーションはリモート OpenSearch サービスドメインから実行されるため、独自のプライベート 内で実行されるためVPC、ローカルドメインの にアクセスする方法が必要ですVPC。これを行うには、組み込みのVPCエンドポイント接続機能を使用して 経由で接続を確立するか AWS PrivateLink、プロキシを設定します。
ローカルドメイン OpenSearch でバージョン 1.0 以降を使用している場合は、 コンソールまたは AWS CLI を使用して AWS PrivateLink 接続を作成できます。 AWS PrivateLink 接続により、ローカルのリソースはVPC同じ VPC 内のリモートのリソースにプライベートに接続できます AWS リージョン。
VPC エンドポイント接続を作成するには、再インデックスするソースドメインがローカル にありVPC、ソースドメインと宛先ドメインの両方が同じ にある必要があります AWS リージョン。
コンソールでリモート再インデックスを使用して、VPCエンドポイント接続を共有する 2 つのドメイン間でインデックスをコピーできます。
-
で Amazon OpenSearch Service コンソールに移動しますhttps://console.aws.amazon.com/aos/
。 -
左側のナビゲーションペインで [Domains] (ドメイン) を選択します。
-
ローカルドメイン (データをコピーするドメイン) を選択します。選択すると、ドメインの詳細ページが開きます。一般情報の下にある [接続] タブを選択し、[リクエスト] を選択します。
-
接続のリクエストページで、接続モードのVPCエンドポイント接続を選択し、その他の関連する詳細を入力します。これらの詳細には、データをコピーするドメインであるリモートドメインが含まれます。次に、[Request] (リクエスト) を選択します。
-
リモートドメインの詳細ページに移動し、[接続] タブを選択してから [インバウンド接続] テーブルを見つけます。先ほど接続を作成したドメイン (ローカルドメイン) の名前の横にあるチェックボックスをオンにします。[承認] を選択します。
-
ローカルドメインに戻り、[Connections] (接続) タブを選択してから [Outbound connections] (アウトバウンド接続) テーブルを見つけます。2 つのドメイン間の接続がアクティブになると、テーブルの [Endpoint] (エンドポイント) 列でエンドポイントが利用可能になります。エンドポイントをコピーします。
-
ローカルドメインのダッシュボードを開き、左側のナビゲーションにある [Dev Tools] (開発ツール) を選択します。リモートドメインインデックスがローカルドメインにまだ存在しないことを確認するには、次のGETリクエストを実行します。を独自のインデックス名
remote-domain-index-name
に置き換えます。GET
remote-domain-index-name
/_search { "query":{ "match_all":{} } }出力に、インデックスが見つからなかったことを示すエラーが表示されます。
-
GET 次のように、リクエストの下に POST リクエストを作成し、エンドポイントをリモートホストとして使用します。
POST _reindex { "source":{ "remote":{ "host":"
connection-endpoint
", "username":"username
", "password":"password
" }, "index":"remote-domain-index-name
" }, "dest":{ "index":"local-domain-index-name
" } }このリクエストを実行します。
-
GET リクエストを再度実行します。そうすると、出力にローカルインデックスが存在すると表示されます。このインデックスをクエリして、 が OpenSearchリモートインデックスからすべてのデータをコピーしたことを確認できます。
でリモート再インデックスを使用してAPI、VPCエンドポイント接続を共有する 2 つのドメイン間でインデックスをコピーできます。
-
CreateOutboundConnection API オペレーションを使用して、ローカルドメインからリモートドメインへの新しい接続をリクエストします。
POST https://es.
region
.amazonaws.com/2021-01-01/opensearch/cc/outboundConnection { "ConnectionAlias": "remote-reindex-example", "ConnectionMode": "VPC_ENDPOINT", "LocalDomainInfo": { "AWSDomainInformation": { "DomainName": "local-domain-name
", "OwnerId": "aws-account-id
", "Region": "region
" } }, "RemoteDomainInfo": { "AWSDomainInformation": { "DomainName": "remote-domain-name
", "OwnerId": "aws-account-id
", "Region": "region
" } } }ConnectionId
が応答で返されます。この ID は次のステップで使用するので保存しておきます。 -
接続 ID で AcceptInboundConnectionAPIオペレーションを使用して、ローカルドメインからのリクエストを承認します。
PUT https://es.
region
.amazonaws.com/2021-01-01/opensearch/cc/inboundConnection/ConnectionId
/accept -
DescribeOutboundConnections API オペレーションを使用して、リモートドメインのエンドポイントを取得します。
{ "Connections": [ { "ConnectionAlias": "remote-reindex-example", "ConnectionId": "
connection-id
", "ConnectionMode": "VPC_ENDPOINT", "ConnectionProperties": { "Endpoint": "connection-endpoint
" }, ... } ] }ステップ 5 で使用する
connection-endpoint
を保存します。 -
リモートドメインインデックスがローカルドメインにまだ存在しないことを確認するには、次のGETリクエストを実行します。を独自のインデックス名
remote-domain-index-name
に置き換えます。GET
local-domain-endpoint
/remote-domain-index-name
/_search { "query":{ "match_all":{} } }出力に、インデックスが見つからなかったことを示すエラーが表示されます。
-
次のようにPOSTリクエストを作成し、エンドポイントをリモートホストとして使用します。
POST
local-domain-endpoint
/_reindex { "source":{ "remote":{ "host":"connection-endpoint
", "username":"username
", "password":"password
" }, "index":"remote-domain-index-name
" }, "dest":{ "index":"local-domain-index-name
" } }このリクエストを実行します。
-
GET リクエストを再度実行します。そうすると、出力にローカルインデックスが存在すると表示されます。このインデックスをクエリして、 が OpenSearchリモートインデックスからすべてのデータをコピーしたことを確認できます。
リモートドメインが 内でホストVPCされていて、VPCエンドポイント接続機能を使用しない場合は、パブリックにアクセス可能なエンドポイントでプロキシを設定する必要があります。この場合、 OpenSearch サービスには にトラフィックを送信する機能がないため、パブリックエンドポイントが必要ですVPC。
VPC モードでドメインを実行すると、1 つ以上のエンドポイントが に配置されますVPC。ただし、これらのエンドポイントは 内のドメインに入るトラフィックのみを対象としておりVPC、 VPC 自体へのトラフィックは許可しません。
リモートの再インデックスコマンドは、リモートドメインから実行されるため、発信元のトラフィックはそれらのエンドポイントを使ってリモートドメインにアクセスすることはできません。このユースケースでプロキシが必要となるのはそのためです。プロキシドメインには、公開認証機関 (CA) によって署名された証明書が必要です。自己署名証明書またはプライベート CA 署名証明書はサポートされていません。
OpenSearch サービス以外のドメイン間でデータを再インデックスする
セルフマネージドEC2インスタンスのように、リモートインデックスが OpenSearch サービス外でホストされている場合は、 external
パラメータを に設定しますtrue
。
POST _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443", "username": "username", "password": "password", "external": true }, "index": "remote_index
" }, "dest": { "index": "local_index
" } }
この場合、ユーザーネームとパスワードを用いた基本的な認証のみがサポートされます。リモートドメインには、パブリックにアクセス可能なエンドポイント (ローカル OpenSearch サービスドメインVPCと同じ にある場合でも) と、パブリック CA によって署名された証明書が必要です。自己署名証明書またはプライベート CA 署名証明書はサポートされていません。
大規模なデータセットの再インデックスを行う
リモート再インデックスは、次のデフォルト値を使用してリモートドメインにスクロールリクエストを送信します。
-
5 分の検索コンテキスト
-
30 秒のソケットタイムアウト
-
1,000 のバッチサイズ
データに合わせてこれらのパラメータを調整することをお勧めします。大きなドキュメントの場合は、バッチサイズを小さくするか、タイムアウトを長くするかを検討してください。詳細については、「スクロール検索
POST _reindex?pretty=true&scroll=10h&wait_for_completion=false { "source": { "remote": { "host": "https://
remote-domain-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 _reindex { "source": { "remote": { "host": "https://
remote-domain-endpoint
:443" }, "index": "remote_index
", "query": { "match": { "field_name": "text" } } }, "dest": { "index": "local_index
" } }
リモート再インデックスはスライスをサポートしていないため、同じリクエストに対して複数のスクロールオペレーションを並行して実行することはできません。
リモート再インデックス設定
標準のインデックス再作成オプションに加えて、 OpenSearch Service は次のオプションをサポートしています。
オプション | 有効な値 | 説明 | 必須 |
---|---|---|---|
外部 | ブール値 | リモートドメインが OpenSearch サービスドメインでない場合、または 2 つのVPCドメイン間でインデックスを再作成する場合は、 を として指定しますtrue 。 |
なし |
region | 文字列 | リモートドメインが別のリージョンにある場合は、リージョン名を指定します。 | なし |