すべてのプロダクト
Search
ドキュメントセンター

PolarDB:Reindex を使用した PolarSearch へのデータ移行

最終更新日:Jun 12, 2026

Reindex API は、リモートのソースクラスターからインデックスデータをプルすることで、セルフマネージドの Elasticsearch または OpenSearch クラスターから PolarSearch へデータを移行します。

前提条件

以下の条件が満たされていることを確認してください:

  • 環境の依存関係:ソースの Elasticsearch または OpenSearch クラスターと PolarSearch のノードは、同じ Virtual Private Cloud (VPC) 内にある必要があります。異なる VPC にある場合は、先に進む前に、まずそれらの間でネットワーク接続を確立する必要があります。

  • バージョンの互換性:PolarSearch のバージョンは、ソースクラスターのバージョンと互換性がある必要があります。互換性の詳細については、「バージョン選択ガイド」をご参照ください。

ステップ 1:移行先インデックスの作成

Reindex タスクを実行する前に、PolarSearch クラスターに、ソースインデックスと同じ設定とマッピングを持つ移行先インデックスを作成します。

  1. ソースインデックスの設定を照会します。

    curl -XGET "http://<source_address>/<source_index>/_settings?pretty"
  2. ソースインデックスのマッピングを照会します。

    curl -XGET "http://<source_address>/<source_index>/_mapping?pretty"
  3. PolarSearch ノードで移行先インデックスを作成します。<source_settings><source_mappings> を、前のステップで取得した実際の設定とマッピングに置き換えます。

    curl -X PUT "http://<dest_address>/<dest_index>?pretty" \
      -u <dest_username>:<dest_password> \
      -H 'Content-Type: application/json' \
      -d'{
      "settings": {
        <source_settings>
      },
      "mappings": {
        <source_mappings>
      }
    }'

ステップ 2:Reindex 許可リストの設定

PolarSearch ノードがリモートのソースクラスターにアクセスできるようにするには、ソースクラスターのアドレスを Reindex 許可リストに追加します。追加しない場合、Reindex タスクは次のいずれかのエラーで失敗します:

  • [address] not allowlisted in reindex.remote.allowlist

  • [address] not allowlisted in reindex.remote.whitelist

重要
  • 許可リストは手動で設定できません。ソースクラスターのアドレスを追加するには、チケットを送信してください。

  • 許可リストのパラメーターは静的な設定です。変更を有効にするには、PolarSearch ノードの再起動が必要です。お客様のサービスへの影響を最小限に抑えるため、再起動は業務時間外に実行してください。

ステップ 3:Reindex タスクの実行

  1. PolarSearch ノードで次のコマンドを実行して、Reindex タスクを開始します。このコマンドは、リモートのソースクラスターから PolarSearch の移行先インデックスにデータをプルします。

    curl -X POST "http://<dest_address>/_reindex?pretty" \
      -u <dest_username>:<dest_password> \
      -H 'Content-Type: application/json' \
      -d'{
      "source": {
        "remote": {
          "host": "http://<source_address>",
          "username": "<source_username>",
          "password": "<source_password>"
        },
        "index": "<source_index>" // 移行するソースインデックスの名前
      },
      "dest": {
        "index": "<dest_index>" // PolarSearch の移行先インデックスの名前
      }
    }'

    パラメーター

    パラメーター

    説明

    source_address

    ソース Elasticsearch または OpenSearch クラスターのアクセスアドレスを host:port 形式で指定します。

    source_username

    ソースクラスターにアクセスするためのユーザー名です。認証が不要な場合は、usernamepassword フィールドを省略できます。

    source_password

    ソースクラスターにアクセスするためのパスワードです。

    source_index

    移行するソースインデックスの名前です。

    dest_address

    移行先の PolarSearch クラスターのアクセスアドレスを host:port 形式で指定します。

    dest_username

    PolarSearch にアクセスするためのユーザー名です。

    dest_password

    PolarSearch にアクセスするためのパスワードです。

    dest_index

    PolarSearch の移行先インデックスの名前です。

  2. Reindex タスクが完了したら、ソースインデックスと移行先インデックスのドキュメント数を比較して、移行を検証します。

    # ソースインデックスのドキュメント数を照会
    curl -XGET "http://<source_address>/<source_index>/_count?pretty"
    
    # 移行先インデックスのドキュメント数を照会
    curl -XGET "http://<dest_address>/<dest_index>/_count?pretty" \
      -u <dest_username>:<dest_password>

よくある質問

  • Q1:1 回の Reindex タスクで複数のインデックスを移行できますか?

    いいえ。Reindex API は 1 対 1 のインデックス移行のみをサポートします。複数のインデックスを移行するには、インデックスごとに個別の Reindex タスクを実行する必要があります。データやフィールドの競合が発生する可能性があるため、複数のソースインデックスから単一の移行先インデックスへのデータ移行 (多対 1 の移行) は行わないでください。代わりに、複数の 1 対 1 の Reindex タスクを実行してください。例えば、test_index1test_index_copy1 に移行し、次に test_index2test_index_copy2 に移行します。

    curl -X POST "http://<dest_address>/_reindex?pretty" \
      -u <dest_username>:<dest_password> \
      -H 'Content-Type: application/json' \
      -d'{
      "source": {
        "remote": {
          "host": "http://<source_address>",
          "username": "<source_username>",
          "password": "<source_password>"
        },
        "index": "test_index1" // 移行するソースインデックスの名前
      },
      "dest": {
        "index": "test_index_copy1" // PolarSearch の移行先インデックスの名前
      }
    }'
    
    curl -X POST "http://<dest_address>/_reindex?pretty" \
      -u <dest_username>:<dest_password> \
      -H 'Content-Type: application/json' \
      -d'{
      "source": {
        "remote": {
          "host": "http://<source_address>",
          "username": "<source_username>",
          "password": "<source_password>"
        },
        "index": "test_index2" // 移行するソースインデックスの名前
      },
      "dest": {
        "index": "test_index_copy2" // PolarSearch の移行先インデックスの名前
      }
    }'
  • Q2:Reindex タスクが illegal_argument_exception エラーで失敗した場合はどうすればよいですか?

    このエラーは、ソースインデックスのフィールドタイプが移行先インデックスのマッピングと互換性がないことを示しています。Reindex タスクを実行する前に、移行先インデックスのマッピングがソースインデックスのマッピングと一致していることを確認してください。

    エラー例:

    "cause" : {
      "type" : "illegal_argument_exception",
      "reason" : "mapper [...] cannot be changed from type [float] to [long]"
    }
  • Q3:複数のソースクラスターに対して許可リストを設定するにはどうすればよいですか?

    複数のソースクラスターからデータを移行する必要がある場合は、チケットを送信してお問い合わせいただく際に、許可リストのパラメーターに複数のアドレスをカンマで区切って追加できます。例:reindex.remote.allowlist: "host1:9200, host2:9200"

付録:利用可能な Reindex パラメーター

リクエストの例

curl -X POST "http://<dest_address>/_reindex?pretty&refresh=false&timeout=30s&wait_for_active_shards=1&wait_for_completion=false&requests_per_second=-1&require_alias=false&scroll=5m&slices=1&max_docs=100000"
-u <dest_username>:<dest_password>
-H 'Content-Type: application/json'
-d'
{
  "source": {
    "remote": {
      "host": "http://<source_address>",
      "username": "<source_username>",
      "password": "<source_password>"
    },
    "index": "test_index" // 移行するインデックスの名前
  },
  "dest": {
    "index": "test_index_copy"  // PolarSearch の移行先インデックスの名前
  }
}'

パラメーター

パラメーター

タイプ

デフォルト

説明

wait_for_completion

ブール値

false

タスクの完了を待つかどうかを指定します。

  • false:リクエストはすぐに task_id を返し、タスクはバックグラウンドで非同期に実行されます。

  • true:タスクが完了し、結果が返されるまでクライアントはブロックされます。このモードは小規模なデータセットには適していますが、大規模なデータセットではタイムアウトする可能性があります。

requests_per_second

整数

-1

1 秒あたりに処理するサブリクエストの数で、速度制限に使用されます。-1 の値は速度制限を無効にしますが、クラスターに過負荷をかける可能性があります。小さな値から始めて、クラスターの負荷に応じて調整することを推奨します。

timeout

時間

30s

リクエストのタイムアウト期間です。ネットワークの変動によってタスクが中断されるのを防ぐために、ネットワークの状態やタスクの複雑さに応じて、この値を大きくすることができます (例:5m)。

refresh

ブール値

false

書き込み後すぐにインデックスをリフレッシュして、データを検索可能にするかどうかを指定します。これを true に設定すると、ほぼリアルタイムの検索が可能になりますが、システムのオーバーヘッドが大幅に増加し、書き込みパフォーマンスが低下します。

slices

整数 / "auto"

1

タスクを並列実行するために分割するスライスの数です。"auto" に設定すると、システムが自動的に並列度を決定します。

説明

クラスター間の Reindex では、slices1 にしか設定できません。

max_docs

整数

-

タスクで処理するドキュメントの最大数です。デフォルトでは、一致するすべてのドキュメントが処理されます。テスト目的で、1000 などの小さな値を設定できます。

wait_for_active_shards

文字列

1

タスクを開始する前に利用可能でなければならないアクティブなシャードの数です。指定可能な値は "all" または特定の整数です。

scroll

時間

5m

ソースインデックスでのスクロールコンテキストの保持期間です。このパラメーターは、データがプルされている間、検索コンテキストを維持します。

require_alias

ブール値

false

移行先がエイリアスである必要があるかどうかを指定します。true に設定した場合、移行先インデックス (dest.index) はインデックス名ではなく、エイリアスである必要があります。