このトピックでは、Elasticsearch 用 Java クライアントの原則、バージョン互換性、および使用例について説明します。 Java クライアントを使用して Elasticsearch と対話し、取得および分析タスクを実行できます。
既存のコードを Transport Client から REST クライアントに移行する
Transport Client は、Elasticsearch の最初のバージョンで開発された特殊なクライアントです。 TCP を介して Elasticsearch と通信します。バージョンが一致しないバージョンの Elasticsearch と通信する場合、互換性の問題が発生する可能性があります。 詳細については、「新しい Java クライアントに関する動機」をご参照ください。
Elasticsearch は 2016 年に Java Low Level REST Client をリリースしました。Java Low Level REST Client は Apache HTTP クライアントに基づいて開発されており、HTTP を介してすべてのバージョンの Elasticsearch クラスタと通信できます。 Elasticsearch はまた、Low Level REST Client に基づいて High Level REST Client をリリースしました。
Transport Client は Elasticsearch 7.0 では非推奨になり、Elasticsearch 8.0 では使用できなくなりました。 Java REST クライアントを使用することをお勧めします。 Java REST クライアントは、HTTP リクエストを使用して、リクエストとレスポンスのシリアル化の問題を処理します。 これにより、ビジネス開発が容易になります。
Transport Client を使用して、ポート 9300 経由で Alibaba Cloud Elasticsearch V5.5 または V5.6 クラスタにのみアクセスできます。 V6.X 以降の Alibaba Cloud Elasticsearch クラスタは、Transport Client をサポートしていません。
Transport Client 5.5 または 5.6 を使用して Alibaba Cloud Elasticsearch クラスタにアクセスすると、システムは「NoNodeAvailableException」エラーメッセージを表示します。 バージョン互換性を確保するために、Transport Client 5.3.3 または Java Low Level REST Client を使用して Elasticsearch クラスタにアクセスすることをお勧めします。 Transport Client を使用する場合は、client.transport.sniff を false に設定します。 詳細については、「Transport Client (5.x)」をご参照ください。
Java REST クライアント
Elasticsearch は、次のタイプの Java REST クライアントを提供します。
Java Low Level REST Client: HTTP を介して Elasticsearch クラスタと通信します。 API 操作は、データのエンコードまたはデコードを行いません。 Java Low Level REST Client は、すべてのバージョンの Elasticsearch と互換性があります。
Java High Level REST Client: Java High Level REST Client は Java Low Level REST Client に基づいて開発されており、API 操作固有のメソッドを公開するように設計されています。 Java High Level REST Client は、Elasticsearch コア プロジェクトに依存しています。 クライアントはリクエスト オブジェクトをパラメータとして受け取り、レスポンス オブジェクトを返します。 すべての API 操作は、同期または非同期で呼び出すことができます。
同期メソッドは、レスポンス オブジェクトを返します。
async で名前が接尾辞されている非同期メソッドには、リスナー パラメータが必要です。 このパラメータは、レスポンスまたはエラーを受信したときにターゲット メソッドに処理を続行するように通知します。
このトピックでは、Java クライアントの使用方法について説明します。 REST クライアントを使用することをお勧めします。 Java クライアントには以下が含まれます。