準備
Alibaba Cloud Elasticsearch クラスターを作成します。詳細については、Alibaba Cloud Elasticsearch クラスターの作成をご参照ください。
必要なプログラミング言語を使用するElasticsearchクライアントをインストールします。
非互換性の問題を防ぐため、作成したElasticsearchクラスターと同じバージョンのクライアントをインストールすることをお勧めします。 Elasticsearchクラスターとクライアント間のバージョンの互換性については、互換性をご参照ください。
Elasticsearch Go クライアントについては、Elasticsearch Go クライアントをご参照ください。
説明
Go クライアントを使用してElasticsearchクラスターにアクセスする前に、Go のコンパイル環境をインストールする必要があります。詳細については、Go プログラミング言語をご参照ください。この例では、Go 1.19.1 が使用されています。
Elasticsearch Java クライアントについては、Elasticsearch Java API クライアントをご参照ください。
説明
Java クライアントには、Transport Client、Low Level REST Client、High Level REST Client、および Java API Client が含まれます。各クライアントタイプのサンプルコードについては、概要をご参照ください。この例では、High Level REST Client 6.7 が使用されています。
Java Transport Client は、TCP 経由でElasticsearchクラスターと通信します。 Java Transport Client が、Java Transport Client のバージョンと一致しないバージョンのElasticsearchクラスターと通信する場合、非互換性の問題が発生する可能性があります。オープンソースのElasticsearchの新しいバージョンでは、Transport Client は非推奨となっています。 Transport Client 5.5 を使用してElasticsearch V5.5 クラスターにアクセスする場合、または Transport Client 5.6 を使用してElasticsearch V5.6 クラスターにアクセスする場合、システムは NoNodeAvailableException エラーメッセージを報告します。バージョンの互換性を確保するために、Transport Client 5.3.3 または Java Low Level REST Client を使用してElasticsearchクラスターにアクセスすることをお勧めします。
Elasticsearch PHP クライアントについては、Elasticsearch PHP クライアントをご参照ください。
説明
オープンソースのElasticsearchのPHPクライアントによって提供されるデフォルトの接続プールは、クラウド内のサービスへのアクセスには適していません。 Alibaba Cloud Elasticsearchは、ロードバランシングに基づいてクライアントから送信されたリクエストを処理します。したがって、PHPクライアントは、接続プールとして SimpleConnectionPool を使用する必要があります。 SimpleConnectionPool が接続プールとして使用されていない場合、Alibaba Cloud Elasticsearchクラスターの再起動時に接続エラーが発生します。さらに、PHPクライアントは、クライアントが切断された後にElasticsearchクラスターに再接続するように構成する必要があります。これは、PHPクライアントが SimpleConnectionPool を接続プールとして使用している場合でも、Alibaba Cloud Elasticsearchクラスターの再起動中に接続エラーが発生する可能性があるためです。たとえば、「有効な接続がありません」というエラーメッセージが報告される場合があります。
Elasticsearch Python クライアントについては、Elasticsearch Python クライアントをご参照ください。
その他のElasticsearchクライアントについては、Elasticsearchクライアントをご参照ください。
Elasticsearchクラスターの自動インデックス作成機能を有効にします。詳細については、YML ファイルの構成をご参照ください。
ネットワーク接続を確保するために、Elasticsearchクラスターの IP アドレスホワイトリストを構成します。
コードを実行するサーバーがElasticsearchクラスターと同じ仮想プライベートクラウド (VPC) 内にある場合、クラスターの内部エンドポイントを使用してクラスターにアクセスできます。 Elasticsearchクラスターにアクセスする前に、サーバーのプライベート IP アドレスがクラスターのプライベート IP アドレスホワイトリストに追加されていることを確認してください。デフォルトでは、0.0.0.0/0 がプライベート IP アドレスホワイトリストに追加されます。
コードを実行するサーバーがインターネット上にある場合、クラスターのパブリックエンドポイントを使用してElasticsearchクラスターにアクセスできます。 Elasticsearchクラスターのパブリックネットワークアクセス機能を有効にし、サーバーのパブリック IP アドレスを Elasticsearchクラスターのパブリック IP アドレスホワイトリストに追加する必要があります。詳細については、Elasticsearchクラスターのパブリックまたはプライベート IP アドレスホワイトリストの構成をご参照ください。
重要
Wi-Fi やブロードバンドネットワークなどのパブリックネットワークを使用する場合は、パブリックネットワークのアウトバウンドトラフィックを制御するジャンプサーバーの IP アドレスをElasticsearchクラスターの IP アドレスホワイトリストに追加します。
すべての IPv4 アドレスからクラスターへのアクセスを許可するために、Elasticsearchクラスターの IP アドレスホワイトリストに 0.0.0.0/0 を追加できます。この構成を行うと、すべてのパブリック IPv4 アドレスを使用してElasticsearchクラスターにアクセスできます。これはセキュリティリスクをもたらします。この構成を行う前に、リスクを評価することをお勧めします。
IP アドレスホワイトリストが構成されていないか、IP アドレスホワイトリストが正しく構成されていない場合、システムは接続タイムアウトエラーを示す Timeout connecting
エラーメッセージを報告します。
クライアントからクラスター内のKibanaノードにアクセスする場合は、Kibanaサービスの IP アドレスホワイトリストを構成する必要があります。詳細については、Kibana のパブリックまたはプライベート IP アドレスホワイトリストの構成をご参照ください。
サンプルコード
このセクションでは、Alibaba Cloud Elasticsearchクラスターにアクセスするために使用できる各クライアントタイプのサンプルコードを提供します。
上記のコードは、HTTP が有効になっているElasticsearchクラスターにアクセスするためにクライアントを使用する方法のみを示しています。 ElasticsearchクラスターでHTTPSが有効になっている場合は、次のコードに示すように、use_ssl の値を True に変更し、verify_certs=True を追加する必要があります。
es = Elasticsearch(
['<YourEsHost>'],
http_auth=('<UserName>', '<YourPassword>'),
port=9200,
use_ssl=True, // SSL を使用します。
verify_certs=True // 証明書を検証します。
)
上記のコードを使用する場合は、次の表にリストされているパラメーターを実際の値に置き換える必要があります。
パラメーター | 説明 |
<YourEsHost> | Elasticsearch クラスターのパブリックエンドポイントまたは内部エンドポイント。Elasticsearch コンソールの Elasticsearch クラスターの [基本情報] ページに移動して、パブリックエンドポイントまたは内部エンドポイントを取得できます。 |
<UserName> | Elasticsearch クラスターのユーザー名。ユーザー名は elastic 。 |
<YourPassword> | Elasticsearch クラスターのパスワード。 パスワードを忘れた場合は、[セキュリティ] ページに移動してパスワードをリセットできます。詳細については、Elasticsearch クラスターのアクセスパスワードのリセットをご参照ください。 |
<YourEsIndex> | Elasticsearch クラスター内のインデックスの名前。 |
<YourEsType> | ドキュメントのタイプ。 重要 V7.0 より前のバージョンの Elasticsearch クラスターを使用している場合は、ビジネス要件に基づいてドキュメントタイプを指定できます。 V7.0 以降の Elasticsearch クラスターの場合、ドキュメントタイプは _doc に固定されています。 |
<YourEsId> | ドキュメントの ID。 |
<YourEsField> | フィールドの名前。 |
<YourEsFieldValue> | <YourEsField> で指定されたフィールドの値。 |