データセキュリティを保証するために、Alibaba Cloud Elasticsearch インスタンスはデフォルトで相互に分離されています。 2 つの Elasticsearch インスタンス間でデータを検索する場合、Elasticsearch インスタンスを相互接続する必要があります。

始める前に

2 つの Elasticsearch インスタンスを相互接続する前に、次の要件が満たされていることをご確認ください。
  • 両方のインスタンスが、同じ Elasticsearch バージョンを使用している。
  • 両方のインスタンスが、同じユーザーアカウントによって作成されている。
  • 両方のインスタンスが、同じ VPC ネットワークにデプロイされている。
  • 両方のインスタンスが、1 つのゾーンにデプロイされているか、複数のゾーンにデプロイされている。

このタスクについて

上記の要件が満たされた後、Elasticsearch コンソールにログインし、 インスタンスの相互接続 ページに進み、対応する設定を行います。 詳細は、「インスタンスの相互接続を設定する」をご参照ください。

インスタンスの相互接続を設定する

  1. Elasticsearch コンソールの [セキュリティ] ページに進みます。
  2. [インスタンス相互接続] の右側で、[編集] をクリックします。
  3. [設定の編集] ダイアログボックスで、[インスタンスの追加] をクリックします。インスタンスの相互接続を設定する
  4. [インスタンスの追加] ダイアログボックスで、現在のインスタンスに接続する必要があるインスタンスの ID を選択し、[OK] をクリックします。インスタンスの追加ページ
    重要
    • RAM ユーザーアカウントを使用している場合、RAM ユーザーアカウントには、対応する Alibaba Cloud アカウントですべてのインスタンスを取得するための List 権限が必要です。
    • 前提条件が満たされている場合、[インスタンスの追加] ダイアログボックスで、1 つ以上のインスタンスを選択できます。
    • インスタンス A をインスタンス B に接続すると、インスタンス B の [インスタンス相互接続] ページで、インスタンス A の ID を見つけることができます。これは、インスタンス A とインスタンス B が双方向通信であることを意味しています。
    インスタンスを追加した後、 [設定の編集] ダイアログボックスの 相互接続されたインスタンスリストで、追加されたインスタンスを見つけることができます。 相互接続されたインスタンスのリスト

相互接続されたインスタンスを削除する

  1. Elasticsearch コンソールの [セキュリティ] ページに進みます。
  2. [インスタンス相互接続] の右側で、[編集] をクリックします。
  3. [設定の編集] ダイアログボックスで、 相互接続されたインスタンスリストの [操作] 列にある、[削除] をクリックします。相互接続されたインスタンスを削除する
  4. [インスタンスの削除] メッセージで、[OK] をクリックし、インスタンスを切断します。
    [OK] をクリックすると、[設定の編集] ダイアログボックスの相互接続されたインスタンスリストからインスタンスが削除されます。

相互接続されたインスタンスの照会

  1. Elasticsearch コンソールの [セキュリティ] ページに進みます。
  2. [インスタンス相互接続] の右側で、[編集] をクリックします。
  3. [設定の編集] ダイアログボックスの相互接続されたインスタンスリストで、相互接続されたインスタンスを表示することができます。相互接続されたインスタンスの照会
    重要 他のインスタンスに相互接続されているインスタンスを削除する際、 [インスタンスはすでに他のインスタンスと接続されています。 インスタンスを削除すると、相互接続も削除されます。 インスタンスを削除してもよろしいですか。] という操作を確認するメッセージが表示されます。

クロスクラスター検索を設定する

  1. 現在のインスタンスに相互接続されている Elasticsearch インスタンスの Kibana コンソールにログインします
  2. 次のリクエストを送信して、インデックスを作成し、インデックスにドキュメントを追加します。
    PUT /twitter
    {
        "settings" : {
            "index" : {
                "number_of_shards" : 3, 
                "number_of_replicas" : 2 
            }
        }
    }
    POST twitter/doc/
    {
        "user" : "kimchy",
        "post_date" : "2009-11-15T14:12:12",
        "message" : "trying out Elasticsearch"
    }
    インデックスとドキュメントは、後でクロスクラスター検索機能をテストするために使用されます。
  3. 現在の Elasticsearch インスタンスの Kibana コンソールにログインします
  4. 次のいずれかの方法を使用して、現在の Elasticsearch インスタンスでクロスクラスター検索を設定します。
    以下の方法では、Elasticsearch V6.7 を使用しています。 Elasticsearch の他のバージョンでクロスクラスター検索を設定するために使用される方法も類似しています。 詳細については、 『Configure cross-cluster search in Elasticsearch V6.7』、『Configure cross-cluster search in Elasticsearch V6.3』、および『Elasticsearch V5.5』をご参照ください。
    • 方法 1:リモート Elasticsearch インスタンスの内部ネットワークエンドポイントを使用して、クロスクラスター検索を設定します。
      PUT _cluster/settings
      {
        "persistent": {
          "cluster": {
            "remote": {
              "cluster_one": {
                "seeds": [
                  "es-cn-o4xxxxxxxxxxxx4f1.elasticsearch.aliyuncs.com:9300"
                ]
              }
            }
          }
        }
      }
    • 方法 2:リモート Elasticsearch インスタンスのノードの IP アドレスを使用して、クロスクラスター検索を設定します。
      PUT _cluster/settings
      {
        "persistent": {
          "cluster": {
            "remote": {
              "cluster_one": {
                "seeds": [
                  "10.8.xx.xx:9300",
                  "10.8.xx.xx:9300",
                  "10.8.xx.xx:9300"
                ]
              }
            }
          }
        }
      }
    重要
    • 現在のインスタンスが 1 つのゾーンにデプロイされている場合、方法 1 または方法 2 を使用して、クロスクラスター検索を設定できます。 複数のインスタンスを現在のインスタンスに接続できます。
    • 現在のインスタンスが複数のゾーンにデプロイされている場合、方法 2 のみを使用してクロスクラスター検索を設定できます。 複数のインスタンスを現在のインスタンスに接続できます。
    • インスタンス A にログインし、リモートインスタンスとしてインスタンス B を指定した場合、インスタンス A からインスタンス B のインデックスを検索できます。しかし、インスタンス B からインスタンス A のインデックスは検索できません。インスタンス B からインスタンス A のインデックスを検索 するには、インスタンス B にログインし、インスタンス A のエンドポイント、またはノード IP アドレスを指定する必要があります。
  5. 次のリクエストを送信して、クロスクラスター検索機能が正常に実行されることを確認します。
    POST /cluster_one:twitter/doc/_search
    {
      "query": {
        "match_all": {}
      }
    }
    クロスクラスター検索機能が正常に実行される場合、次の結果が返されます。
    {
      "took" : 78,
      "timed_out" : false,
      "_shards" : {
        "total" : 3,
        "successful" : 3,
        "skipped" : 0,
        "failed" : 0
      },
      "_clusters" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0
      },
      "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "cluster_one:twitter",
            "_type" : "doc",
            "_id" : "qudxxxxxxxxxx_7ie6J",
            "_score" : 1.0,
            "_source" : {
              "user" : "kimchy",
              "post_date" : "2009-11-15T14:12:12",
              "message" : "trying out Elasticsearch"
            }
          }
        ]
      }
    }