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

Elasticsearch:Transport Client (5.x)

最終更新日:Mar 27, 2026
重要

Transport Client はオープンソース版 Elasticsearch で非推奨となっています。新規プロジェクトでは、すべての Elasticsearch リリース間でバージョン互換性を提供する Java Low Level REST Client をご使用ください。

本トピックでは、Transport Client 5.3.3 を使用して、TCP 経由で Alibaba Cloud Elasticsearch V5.x クラスターに接続する方法について説明します。

前提条件

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

重要

自動インデックス作成(Auto Indexing)が無効の場合、ドキュメントのインデックス登録時にエラーが報告されます。Error

ネットワークアクセスの構成

Java クライアントの実行環境に応じて、接続方法を選択してください。

インターネット(パブリックエンドポイント)

Java クライアントが仮想プライベートクラウド(VPC)の外部にある場合:

  1. クラスターのパブリックネットワークアクセスを有効化します。

  2. クライアントのパブリック IP アドレスをクラスターのパブリック IP アドレスホワイトリストに追加します。詳細については、「Elasticsearch クラスターのパブリックまたはプライベート IP アドレスホワイトリストを設定する」をご参照ください。

重要
  • クライアントが家庭用ネットワークまたはオフィス LAN 内にある場合は、クライアントのプライベート IP アドレスではなく、インターネット出口 IP アドレスをホワイトリストに追加してください。

  • ホワイトリストに 0.0.0.0/0 を追加すると、すべての IPv4 アドレスからクラスターへのアクセスが許可されます。この設定を使用する前に、セキュリティリスクを十分に評価してください。

  • ホワイトリストが未設定または不正な場合、接続時に Timeout connecting エラーが発生し、接続に失敗します。

  • クライアントから Kibana ノードにアクセスするには、別の Kibana ホワイトリストを設定します。 詳細については、「Kibana のパブリックまたはプライベート IP アドレスホワイトリストを設定する」をご参照ください。

同一 VPC 内(内部エンドポイント)

Java クライアントが Elasticsearch クラスターと同一の VPC 内で実行される場合、クラスターの内部エンドポイントを使用します。プライベート IP ホワイトリストのデフォルト値は 0.0.0.0/0 です。

POM 依存関係の追加

以下の依存関係を pom.xml に追加します。

<repositories>
    <!-- Elasticsearch Maven リポジトリ -->
    <repository>
        <id>elasticsearch-releases</id>
        <url>https://artifacts.elastic.co/maven</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>5.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.3.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.7.1</version>
    </dependency>
</dependencies>
重要

Apache Log4j にリモートコード実行 (RCE) の脆弱性が存在する可能性があります。詳細および緩和策については、「脆弱性に関するお知らせ | Apache Log4j 2 のリモートコード実行 (RCE) の脆弱性」をご参照ください。

クラスターへの接続

以下のコードは、Transport Client 接続を初期化する方法を示しています。プレースホルダー部分は、実際のクラスター情報に置き換えてください。

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;

import java.net.InetAddress;

// Transport Client の初期化
TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
        .put("cluster.name", "<cluster-id>")                        // クラスター ID
        .put("xpack.security.user", "elastic:<password>")          // ユーザー名とパスワード
        .put("client.transport.sniff", false)                      // 必ず false に設定
        .build())
        .addTransportAddress(new InetSocketTransportAddress(
                InetAddress.getByName("<endpoint>"), 9300));        // エンドポイント(http:// なし)およびポート

// 使用終了後にクライアントをクローズ
client.close();
パラメーター 説明
cluster.name お使いの Elasticsearch クラスターの ID です。「[基本情報]」ページから取得してください。詳細については、「クラスターの基本情報を表示する」をご参照ください。
xpack.security.user ユーザー名とパスワードを username:password の形式で指定します。デフォルトのユーザー名は elastic です。パスワードを再設定するには、「Elasticsearch クラスターのアクセスパスワードの再設定」をご参照ください。
client.transport.sniff false に設定します。
InetAddress.getByName() クラスターエンドポイントおよびポート 9300。エンドポイントは http:// で始めてはいけません。

以下のプレースホルダーを置き換えてください。

プレースホルダー 説明
<cluster-id> Elasticsearch クラスター ID es-cn-n6w1rux8i000w****
<password> elastic ユーザーのパスワード
<endpoint> クラスターのパブリックまたは内部エンドポイント es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com

以下のサンプルコードは、クラスターへの接続、インデックスへのドキュメント書き込み、およびその取得を行います。完全なサンプルコードをダウンロードできます。

import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;

import static org.elasticsearch.common.xcontent.XContentFactory.*;

import java.net.InetAddress;

public class TransportClientDemo {

    public static void main(String[] args) {
        try {
            // クライアントの初期化
            TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
                    .put("cluster.name", "es-cn-n6w1rux8i000w****")
                    .put("xpack.security.user", "elastic:es_password")
                    .put("client.transport.sniff", false)
                    .build())
                    .addTransportAddress(new InetSocketTransportAddress(
                            InetAddress.getByName("es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com"), 9300));

            // インデックスへのドキュメント書き込み
            IndexResponse idxResp3 = client.prepareIndex("test_index", "test_type", "333")
                    .setSource(jsonBuilder()
                            .startObject()
                            .field("user_id", "333")
                            .field("email", "a***@aliyun.com")
                            .endObject()
                    )
                    .get();
            System.out.println(idxResp3.toString());

            // ドキュメントの取得
            GetResponse getResp = client.prepareGet()
                    .setIndex("test_index")
                    .setType("test_type")
                    .setId("333")
                    .execute()
                    .get();
            System.out.println(getResp.getSourceAsString());

            client.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

トラブルシューティング

`NoNodeAvailableException`

このエラーは、Transport Client 5.5 または 5.6 を使用して Elasticsearch V5.x クラスターに接続しようとした際に発生します。代わりに Transport Client 5.3.3 をご使用ください。

`Timeout connecting`

クラスターに到達できません。以下の点を確認してください。

  • クライアントの IP アドレスが、クラスターのホワイトリスト(ネットワーク環境に応じてパブリックまたはプライベート)に登録されていること

  • ネットワーク環境に応じて、正しいエンドポイント(パブリックまたは内部)を使用していること

  • 家庭用ネットワークまたはオフィス LAN のクライアントでは、プライベート IP アドレスではなく、インターネット出口 IP アドレスがホワイトリストに登録されていること

ドキュメント書き込み時の自動インデックス作成エラー

ドキュメントの書き込み時にエラーが表示される場合、Auto Indexing が無効になっている可能性があります。YML ファイルを構成するを参照し、クラスターの YML 構成で有効にしてください。

次のステップ