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

Elasticsearch:Solr クラスターから Alibaba Cloud Elasticsearch へのドキュメント移行

最終更新日:Mar 27, 2026

オープンソースの solr-to-es ツールを使用して、Solr コアから Alibaba Cloud Elasticsearch インデックスへドキュメントを移行します。

警告

solr-to-es は Elasticsearch V6.X クラスターのみをサポートしています。対象クラスターが異なるバージョンを実行している場合は、続行前に互換性テストを実行してください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • Alibaba Cloud Elasticsearch V6.X クラスター(自動インデックス作成 が有効化済み)。本例では V6.3.2 を使用します。セットアップ手順については、「Alibaba Cloud Elasticsearch クラスターの作成」および「YML ファイルの設定」をご参照ください。

  • Elastic Compute Service (ECS) インスタンス(Elasticsearch クラスターと同一の リージョン、ゾーン、および仮想プライベートクラウド (VPC) 内で実行中)。本例では CentOS 7.3 を使用します。セットアップ手順については、「ステップ 1:ECS インスタンスの作成」をご参照ください。

  • ECS インスタンスに Solr がインストール済み(本例では Solr 5.0.0 を使用)。詳細については、公式 Solr ドキュメントをご参照ください。

  • ECS インスタンスに Python 3.0 以降がインストール済み(本例では Python 3.6.2 を使用)。

  • ECS インスタンスに pysolr 3.3.3 以降(ただし 4.0 より前)がインストール済み。

solr-to-es のインストール

  1. ECS インスタンスに接続します。接続手順については、「パスワードまたはキーペアによる Linux インスタンスへの接続」をご参照ください。

    本例では一般ユーザーアカウントを使用します。
  2. solr-to-es をダウンロードし、setup.py が格納されているディレクトリに移動します。

  3. solr-to-es をインストールします。

    sudo python setup.py install

ドキュメントの移行

すべての移行コマンドは、以下の構造に従います:Solr クエリ URL、認証情報を含む Elasticsearch エンドポイント、対象インデックス名、およびインデックスタイプを指定します。

Solr コアから Elasticsearch インデックスへドキュメントを移行するには、以下のコマンドを実行します。

sudo python __main__.py <solr_url>:8983/solr/<my_core>/select http://<username>:<password>@<elasticsearch_url>:9200 <elasticsearch_index> <doc_type>

プレースホルダーを実際の値に置き換えてください。

プレースホルダー 説明
<solr_url> ご利用の Solr クラスターのエンドポイント http://116.62..
<my_core> 移行対象ドキュメントを含む Solr コアの名称 my_core
<username> ご利用の Elasticsearch クラスターのユーザー名(デフォルトは elastic elastic
<password> クラスター作成時に設定したパスワード
<elasticsearch_url> ご利用の Elasticsearch クラスターの内部エンドポイントまたはパブリックエンドポイント。この情報は、クラスターの 基本情報 ページで確認できます。詳細については、「クラスターの基本情報を表示」をご参照ください。 es-cn-****.elasticsearch.aliyuncs.com
<elasticsearch_index> 対象インデックスの名称 elasticsearch_index
<doc_type> インデックスのタイプ doc_type
異なるバージョンの solr-to-es を使用する場合は、代わりに以下の代替コマンド構文をお試しください。詳細については、solr-to-es ドキュメントをご参照ください。
sudo solr-to-es [-h] [--solr-query SOLR_QUERY] [--solr-fields COMMA_SEP_FIELDS]
                 [--rows-per-page ROWS_PER_PAGE] [--es-timeout ES_TIMEOUT]
                 solr_url elasticsearch_url elasticsearch_index doc_type
本トピックで説明する環境でこのコマンドを実行すると、以下のエラーが発生します:-bash: solr-to-es.py: コマンドが見つかりません

本例では、my_core Solr コア内のすべてのドキュメントをクエリし、それらをご利用の Elasticsearch クラスター内の elasticsearch_index インデックスに書き込みます。

  1. ECS インスタンスで、solr-to-es-master/solr_to_es ディレクトリに移動します。

  2. 以下のコマンドを実行します。

    sudo python __main__.py 'http://116.62.**.**:8983/solr/my_core/select?q=*%3A*&wt=json&indent=true' 'http://elastic:Your password@es-cn-so4lwf40ubsrf****.public.elasticsearch.aliyuncs.com:9200' elasticsearch_index doc_type

    このコマンドで使用される Solr クエリ URL のパラメーターは以下のとおりです。

    パラメーター 説明
    q 必須。Solr 標準クエリ構文を使用したクエリ式。*%3A* はすべてのドキュメントに一致します。
    wt 応答フォーマット。サポートされる値: jsonxmlpythonrubycsv
    indent 読みやすさのために応答をインデントするかどうか。デフォルト値: false

    その他のパラメーターについては、「ドキュメントの移行」セクションをご参照ください。

  3. ご利用の Elasticsearch クラスターの Kibana コンソールにログインします。ログイン手順については、「Kibana コンソールへのログイン」をご参照ください。

    本例では Elasticsearch V6.7 クラスターの Kibana コンソールを使用します。他のバージョンでは手順が異なる場合があります。
  4. 左側ナビゲーションウィンドウで、Dev Tools をクリックし、次に Go to work をクリックします。

  5. Console タブで、以下のコマンドを実行して、elasticsearch_index インデックスが作成されたことを確認します。

    GET _cat/indices?v
  6. 以下のコマンドを実行して、移行されたドキュメントを表示します。

    GET /elasticsearch_index/doc_type/_search

    成功した場合、応答は以下のようになります。

    {
      "took" : 12,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 2,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "elasticsearch_index",
            "_type" : "doc_type",
            "_id" : "Tz8WNW4BwRjcQciJ****",
            "_score" : 1.0,
            "_source" : {
              "id" : "2",
              "title" : [
                "test"
              ],
              "_version_" : 1648195017403006976
            }
          },
          {
            "_index" : "elasticsearch_index",
            "_type" : "doc_type",
            "_id" : "Tj8WNW4BwRjcQciJ****",
            "_score" : 1.0,
            "_source" : {
              "id" : "1",
              "title" : [
                "change.me"
              ],
              "_version_" : 1648195007391203328
            }
          }
        ]
      }
    }

次のステップ

ドキュメントが正常に移行されたことを確認した後、以下の操作を行ってください。

  1. アプリケーションの接続設定を更新し、Elasticsearch エンドポイントを指すようにします。

  2. 検索クエリが期待通りの結果を返すことを検証します。

  3. 自動インデックス作成が不要になった場合は、意図しないインデックス作成を防ぐため、無効化してください。手順については、「YML ファイルの設定」をご参照ください。