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

Elasticsearch:Elasticsearch クラスターにアクセスするためのクライアントの使用に関する FAQ

最終更新日:Jan 11, 2025

このトピックでは、Elasticsearch クラスターにアクセスするためのクライアントの使用に関するよくある質問への回答を提供します。

Alibaba Cloud Elasticsearch はオープンソースの Elasticsearch API と互換性がありますか?

Alibaba Cloud Elasticsearch は、オープンソースの Elasticsearch が提供する RESTful API をサポートし、専用の管理 API を提供します。

  • Alibaba Cloud Elasticsearch は、オープンソースの Elasticsearch が提供する RESTful API と完全に互換性があります。 RESTful API を使用して、クラスター内のデータを管理できます。たとえば、ドキュメントの追加、ドキュメントの削除、ドキュメントの変更、データの検索、エイリアスの設定などを行うことができます。詳細については、「Restful API」をご参照ください。

  • Alibaba Cloud Elasticsearch は専用の管理 API を提供します。この API を呼び出して、Alibaba Cloud Elasticsearch コンソールで実行できる操作を実装できます。たとえば、クラスターの作成や、クラスターの IP アドレスホワイトリストの設定などを行うことができます。詳細については、「機能別の操作リスト」をご参照ください。

Transport Client を使用して Alibaba Cloud Elasticsearch クラスターにアクセスする場合、cluster.name パラメーターをどのように設定すればよいですか?

cluster.name パラメーターをクラスターの ID に設定します。 ID は、クラスターの [基本情報] ページから取得できます。詳細については、「クラスターの基本情報を表示する」をご参照ください。

Transport Client を使用して Alibaba Cloud Elasticsearch クラスターにアクセスすると、「NoNodeAvailableException」というエラーメッセージが表示されます。どうすればよいですか?

このエラーメッセージは、Transport Client 5.5 または 5.6 が使用されているために返されます。 Alibaba Cloud Elasticsearch クラスターにアクセスするには、Transport Client 5.3.3 を使用することをお勧めします。 Transport Client を使用してアクセスできるのは、Alibaba Cloud Elasticsearch V5.5 または V5.6 クラスターのみです。 Transport Client を使用する場合、client.transport.sniff パラメーターを false に設定します。詳細については、「Transport Client (5.x)」をご参照ください。

説明

Transport Client は、オープンソースの Elasticsearch 7.0 では廃止されています。 Java REST クライアントを使用することをお勧めします。 Java REST クライアントの詳細については、「High Level REST Client (6.3.x)」、「High Level REST Client (6.7.x)」、および「Low Level REST Client (5.x)」をご参照ください。

クライアントを使用して Alibaba Cloud Elasticsearch クラスターにアクセスすると、「Client Request Timeout」というエラーメッセージが表示された場合はどうすればよいですか?

次の表に、この問題の考えられる原因と関連する解決策を示します。

考えられる原因

解決策

Elasticsearch クラスターのメモリが不足しています。その結果、読み取りおよび書き込み I/O 操作がブロックされています。

Elasticsearch クラスタの監視データの表示を行い、クラスタのメモリ使用量と読み書きワークロードを取得します。クラスタのメモリが不足していて、クラスタの読み書きワークロードが重い場合は、読み書き操作の数を適切に減らして、読み書きパフォーマンスを向上させることをお勧めします。

短い接続タイムアウト期間を指定しています。その結果、クライアントと Elasticsearch クラスター間の接続が確立される前にタイムアウトが発生します。

ビジネス要件に基づいて、クライアントの ConnectTimeout パラメーターの値と SocketTimeout パラメーターの値を調整します。たとえば、ConnectTimeout パラメーターの値を 10000 に、SocketTimeout パラメーターの値を 30000 に変更できます。

ネットワークの変動などのネットワークの問題が発生しています。

実際の状況に基づいて問題を解決します。

Java API を使用してポート 9200 経由で Alibaba Cloud Elasticsearch クラスターにアクセスできますか?

はい。 Java API を使用して、ポート 9200 経由で Elasticsearch クラスターにアクセスできます。 Alibaba Cloud Elasticsearch では、オープンソースの Elasticsearch でサポートされているすべての Java API を使用して、ポート 9200 経由ですべてのバージョンの Alibaba Cloud Elasticsearch クラスターにアクセスできます。 Alibaba Cloud Elasticsearch V5.X クラスターにアクセスする場合は、Transport Client 5.3.3 を使用してポート 9300 経由でクラスターにアクセスすることもできます。 Alibaba Cloud Elasticsearch V6.0 以降のクラスターにアクセスする場合、ポート 9300 は潜在的なセキュリティリスクがあるため使用できず、ポート 9200 のみ使用可能です。 Alibaba Cloud Elasticsearch では、カスタムポート経由でクラスターにアクセスすることはできません。

説明

Transport Client 5.5.3 の SDK のバグのため、Transport Client 5.3.3 の SDK のみを使用して Elasticsearch V5.X クラスターにアクセスできます。 Elasticsearch V5.X クラスターにアクセスするために使用されるコードで、client.transport.sniff パラメーターを false に設定する必要があります。 Transport Client の詳細については、「Transport Client (5.x)」をご参照ください。

クライアントを使用して Alibaba Cloud Elasticsearch クラスターにアクセスすると、「Connection reset by peer」というエラーメッセージが表示された場合はどうすればよいですか?

原因

クライアントが Elasticsearch クラスターから予期せず切断された後に、読み取りおよび書き込み操作が実行されます。

解決策

問題を解決するには、次のチェックを実行できます。

  • Elasticsearch クラスターのログと監視データを表示して、クラスターで例外が発生しているかどうかを確認します。

    クラスターの状態が異常、ノードの切断などの問題がクラスターで発生している場合は、最初に問題を解決します。詳細については、「メトリクスと例外処理の推奨事項」をご参照ください。

  • クライアントにネットワークインターセプトポリシーが設定されているかどうかを確認します。

    ユーザー側、Elasticsearch サービス側、およびサーバーロードバランサー (SLB) サービス側からパケットをキャプチャするようにシステムを有効にして、ネットワークの問題をトラブルシューティングできます。いずれの側でもネットワークの問題が発生していない場合は、クライアントにネットワークインターセプトポリシーが設定されているかどうかを確認する必要があります。

  • HTTP keep-alive に基づいて確立された TCP 接続がタイムアウトしたかどうかを確認します。

    HTTP keep-alive により、単一の TCP 接続でサーバーとクライアント間でできるだけ多くのパケットを転送できます。サーバーとクライアント間でパケットが転送されるたびに、HTTP keep-alive に基づいて確立された TCP 接続の期間が更新されます。特定の期間中にサーバーとクライアント間でパケットが転送されない場合、TCP 接続はタイムアウトします。この場合、HTTP keep-alive は TCP 接続を解放して閉じます。

    説明

    TCP keep-alive は、TCP 接続の状態を検出するために使用されるキープアライブメカニズムです。理論的には、TCP 接続が確立された後にサーバーとクライアントで例外が発生しない場合、TCP 接続は閉じられない限り永続的に存在します。 HTTP keep-alive により、単一の TCP 接続でサーバーとクライアント間でできるだけ多くのパケットを転送できます。特定の期間中にサーバーとクライアント間でパケットが転送されない場合、HTTP keep-alive は TCP 接続を解放して閉じます。

    HTTP keep-alive に基づいて確立された TCP 接続がタイムアウトした場合は、接続タイムアウト期間を延長できます。たとえば、クライアントの ConnectTimeout パラメーターの値を 10000 に、SocketTimeout パラメーターの値を 30000 に変更できます。

上記のチェックを実行した後も問題が解決しない場合は、コードロジックが正しいかどうかを確認し、接続を再試行して、実際の状況に基づいて問題を分析できます。

Windows クライアントを使用してクラスターに接続する場合、cURL ツールをインストールして cURL コマンドを使用して Alibaba Cloud Elasticsearch クラスターにアクセスするにはどうすればよいですか?

  1. cURL ツールのパッケージをダウンロードして、cURL ツールをインストールします。パッケージは、cURL のドキュメントから入手できます。

  2. cURL コマンドを実行して Elasticsearch クラスターにアクセスします。詳細については、「cURL コマンドと API 操作を使用して Alibaba Cloud Elasticsearch クラスターを管理する」をご参照ください。

クライアントを使用して Alibaba Cloud Elasticsearch クラスターにアクセスする場合、どの SQL クエリメソッドがサポートされていますか?

Alibaba Cloud Elasticsearch クラスターにアクセスするために使用されるクライアントは、オープンソースの Elasticsearch クラスターにアクセスするために使用されるクライアントと同じ機能をサポートします。また、2 つのクライアントの機能の使用方法も同じです。次の SQL クエリメソッドがサポートされています。

  • SQL REST APISQL Translate APISQL JDBC ドライバー などの SQL クエリメソッド。サポートされている SQL クエリメソッドの詳細については、「SQL Client Applications」をご参照ください。 V6.3 以降の Elasticsearch クラスターは、X-Pack SQL をサポートしています。

  • X-Pack SQL クエリ。 Elastic が提供する x-pack-sql プラグインを使用できます。詳細については、「sql-search-api」をご参照ください。

  • オープンソースプラグイン elasticsearch-sql などのサードパーティ製 SQL プラグイン。プラグインの詳細については、「elasticsearch-sql」をご参照ください。