Tüm Ürünler
Search
Belge Merkezi

Elasticsearch:Transport Client (5.x)

Son Güncelleme:Oct 04, 2026
Önemli

Açık kaynaklı Elasticsearch'te Transport Client kullanımdan kaldırılmıştır. Yeni projeler için tüm Elasticsearch sürümlerinde sürüm uyumluluğu sağlayan Java Low Level REST Client istemcisini kullanın.

Bu konu, TCP üzerinden bir Alibaba Cloud Elasticsearch V5.x kümesine bağlanmak için Transport Client 5.3.3'ün nasıl kullanılacağını açıklar.

Önkoşullar

Başlamadan önce aşağıdaki koşulları sağladığınızdan emin olun:

Önemli

Otomatik Dizin Oluşturma etkinleştirilmezse bir belge dizine eklenirken hata oluşur. Error

Ağ erişimini yapılandırma

Java istemcinizin çalıştığı konuma göre bağlantı yöntemini seçin.

İnternet (genel uç nokta)

Java istemciniz bir sanal özel bulut (VPC) dışındaysa:

  1. Kümeniz için Genel Ağ Erişimini etkinleştirin.

  2. İstemcinizin genel IP adresini kümenin genel IP adresi izin listesine ekleyin. Bkz. Elasticsearch Kümesi İçin Genel veya Özel IP Adresi İzin Listesi Yapılandırma.

Önemli
  • İstemciniz bir ev ağındaysa veya ofis LAN'ındaysa istemcinin özel IP adresi yerine İnternet çıkış IP adresini izin listesine ekleyin.

  • İzin listesine 0.0.0.0/0 eklemek tüm IPv4 adreslerinin kümeye erişmesine olanak tanır. Bu ayarı kullanmadan önce güvenlik risklerini değerlendirin.

  • İzin listesi eksik veya hatalıysa bağlantı Timeout connecting hatasıyla başarısız olur.

  • Bir istemciden Kibana düğümüne erişmek için ayrı bir Kibana izin listesi yapılandırın. Bkz. Kibana İçin Genel veya Özel IP Adresi İzin Listesi Yapılandırma.

Aynı VPC (dahili uç nokta)

Java istemciniz Elasticsearch kümesiyle aynı VPC'de çalışıyorsa kümenin dahili uç noktasını kullanın. Özel IP izin listesi varsayılan olarak 0.0.0.0/0 şeklindedir.

POM bağımlılıklarını ekleme

Aşağıdaki bağımlılıkları pom.xml dosyanıza ekleyin:

<repositories>
    <!-- Elasticsearch Maven repository -->
    <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>
Önemli

Apache Log4j'de uzaktan kod yürütme (RCE) güvenlik açığı bulunabilir. Ayrıntılar ve azaltma adımları için bkz. Güvenlik Açığı Bildirimi | Apache Log4j 2'deki RCE Güvenlik Açığı.

Kümeyle bağlantı kurma

Aşağıdaki kod bir Transport Client bağlantısının nasıl başlatılacağını gösterir. Yer tutucuları gerçek küme değerlerinizle değiştirin.

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;

// Initialize the Transport Client
TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
        .put("cluster.name", "<cluster-id>")                        // Your cluster ID
        .put("xpack.security.user", "elastic:<password>")          // Username and password
        .put("client.transport.sniff", false)                      // Must be false
        .build())
        .addTransportAddress(new InetSocketTransportAddress(
                InetAddress.getByName("<endpoint>"), 9300));        // Endpoint (no http://) and port

// Close the client when done
client.close();
Parametre Açıklama
cluster.name Elasticsearch kümenizin kimliği. Bu değeri Basic Information sayfasından alın. Bkz. Kümenin Temel Bilgilerini Görüntüleme.
xpack.security.user kullanıcı_adı:parola biçimindeki kullanıcı adı ve parola. Varsayılan kullanıcı adı elastic şeklindedir. Parolayı sıfırlamak için bkz. Elasticsearch Kümesinin Erişim Parolasını Sıfırlama.
client.transport.sniff false olarak ayarlayın.
InetAddress.getByName() Küme uç noktası ve 9300 bağlantı noktası. Uç nokta http:// ile başlamamalıdır.

Aşağıdaki yer tutucuları değiştirin:

Yer Tutucu Açıklama Örnek
<cluster-id> Elasticsearch küme kimliğiniz es-cn-n6w1rux8i000w****
<password> elastic kullanıcısının parolası —
<endpoint> Kümenin genel veya dahili uç noktası es-cn-n6w1rux8i000w****.public.elasticsearch.aliyuncs.com

Örnek

Aşağıdaki örnek kümeye bağlanır, bir dizine bir belge yazar ve bu belgeyi alır. Tam örnek kodu indirin.

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 {
            // Initialize the client
            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));

            // Write a document to the index
            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());

            // Retrieve the document
            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);
        }
    }
}

Sorun giderme

NoNodeAvailableException

Bu hata bir Elasticsearch V5.x kümesine bağlanmak için Transport Client 5.5 veya 5.6 kullandığınızda oluşur. Bunun yerine Transport Client 5.3.3 kullanın.

Timeout connecting

Kümeye ulaşılamıyor. Şunları kontrol edin:

  • İstemcinizin IP adresi ağ yapınıza bağlı olarak kümenin genel veya özel izin listesinde bulunmalıdır.

  • Ağ ortamınız için doğru uç noktayı (genel veya dahili) kullanıyor olmalısınız.

  • Ev veya ofis LAN istemcileri için izin listesi girdisi özel IP yerine İnternet çıkış IP'sini kullanmalıdır.

Belge yazma sırasında Otomatik Dizin Oluşturma hatası

Bir belge yazılırken hata oluşuyorsa Otomatik Dizin Oluşturma devre dışı bırakılmış olabilir. Bu özelliği kümenin YML yapılandırmasında etkinleştirin. Bkz. YML Dosyasını Yapılandırma.

Sonraki adımlar