Tüm Ürünler
Search
Belge Merkezi

Elasticsearch:Java API

Son Güncelleme:Oct 04, 2026

Alibaba Cloud Elasticsearch, kümenizle etkileşim kurmak için dört farklı Java istemcisini destekler. Her istemci farklı bir protokol kullanır ve farklı Elasticsearch sürümlerini hedefler. Küme sürümünüze ve kullanım senaryonuzla en iyi eşleşen istemciyi seçin.

İstemci türleri


İstemci


Protokol


Durum


Desteklenen ES sürümleri


Transport Client


TCP


Kullanımdan kaldırıldı


5.x–6.x


Java Low Level REST Client


HTTP


Bakımı devam ediyor


Tüm sürümler


Java High Level REST Client


HTTP


Kullanımdan kaldırıldı (ES 7,15'ten itibaren)


6.x–7.x


Elasticsearch Java API Client


HTTP


Önerilen


7,17 ve üzeri

Uyarı

Transport Client, kümeyle TCP üzerinden iletişim kurar ve sonraki Elasticsearch sürümlerinde kullanımdan kaldırılmıştır. 5.5 sürümüne sahip bir kümeye erişmek için Transport Client 5.5 veya 5.6 sürümüne sahip bir kümeye erişmek için Transport Client 5.6 kullanırsanız NoNodeAvailableException hatası oluşur. Bunun yerine Transport Client 5.3.3 veya Java Low Level REST Client kullanın.

Önemli

Java High Level REST Client, Elasticsearch 7,15 sürümünden itibaren kullanımdan kaldırılmıştır. ES 7,17 ve üzeri sürümlerde yeni projeler için Elasticsearch Java API Client kullanın.

Çalışma biçimi

Tüm REST tabanlı Java istemcileri (Low Level REST Client, High Level REST Client ve Java API Client), temel kimlik doğrulama kullanarak HTTPS üzerinden Elasticsearch kümenize bağlanır. İstemci, HTTP isteklerini küme uç noktasına gönderir ve JSON yanıtı alır.

Transport Client ise HTTP yerine TCP üzerinden bağlantı kurar. TCP tabanlı iletişim, HTTP tabanlı istemcilerin karşılaşmadığı sürüm uyumluluğu kısıtlamaları getirdiğinden, Elasticsearch Transport Client'ı 7.x sürümünden başlayarak kullanımdan kaldırmıştır.

Sürüm uyumluluğu

Uyumluluk sorunlarını önlemek için istemci sürümünüzü küme sürümünüzle eşleştirin. Java API Client, Elasticsearch'ün sürüm numaralandırmasını takip eder: 8.x sürümündeki bir istemci, Elasticsearch 8.x kümeleri ve aynı ana sürüm içindeki sonraki küçük sürümlerle ileriye dönük olarak uyumludur.


Elasticsearch küme sürümü


Önerilen istemci


5.x


Transport Client 5.3.3 veya Java Low Level REST Client


6.x


Java High Level REST Client 6.x veya Java Low Level REST Client


7.x (7,0–7,16)


Java High Level REST Client 7.x veya Java Low Level REST Client


7,17 ve üzeri


Elasticsearch Java API Client


8.x


Elasticsearch Java API Client 8.x

Kullanım örnekleri

Tüm örnekler temel kimlik doğrulamayı kullanır. Kodu çalıştırmadan önce yer tutucuları gerçek değerlerinizle değiştirin.


Yer tutucu


Açıklama


<YourEsHost>


Kümenizin genel veya dahili uç noktası. Elasticsearch konsolunda kümenizin Basic Information sayfasında bulabilirsiniz.


<UserName>


Küme kullanıcı adı. Varsayılan kullanıcı adı elastic şeklindedir.


<YourPassword>


Küme parolası. Parolayı sıfırlamak için kümenizin Security sayfasına gidin.


<YourEsIndex>


İşlem yapılacak dizinin adı.


<YourEsId>


Belge kimliği.

Java High Level REST Client

Bu örnekte High Level REST Client 6.7 kullanılmaktadır. Aşağıdaki bağımlılığı Maven pom.xml dosyanıza ekleyin:

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version>6.7.0</version>
</dependency>

Gradle için şunu ekleyin:

dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.7.0'
}
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.*;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class HighLevelRestClientExample {

    private static final RequestOptions COMMON_OPTIONS;

    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        COMMON_OPTIONS = builder.build();
    }

    public static void main(String[] args) throws IOException {
        // Set up credentials
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials("<UserName>", "<YourPassword>"));

        // Create the client
        RestClientBuilder builder = RestClient.builder(
            new HttpHost("<YourEsHost>", 9200, "http"))
            .setHttpClientConfigCallback(
                (HttpAsyncClientBuilder httpClientBuilder) ->
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));

        RestHighLevelClient client = new RestHighLevelClient(builder);

        // Index a document
        Map<String, Object> document = new HashMap<>();
        document.put("title", "Example document");
        document.put("content", "Hello, Elasticsearch!");

        IndexRequest indexRequest = new IndexRequest("<YourEsIndex>")
            .id("<YourEsId>")
            .source(document);

        IndexResponse indexResponse = client.index(indexRequest, COMMON_OPTIONS);
        System.out.println("Indexed document ID: " + indexResponse.getId());

        // Delete a document
        DeleteRequest deleteRequest = new DeleteRequest("<YourEsIndex>", "<YourEsId>");
        DeleteResponse deleteResponse = client.delete(deleteRequest, COMMON_OPTIONS);
        System.out.println("Deleted document ID: " + deleteResponse.getId());

        client.close();
    }
}

Java Low Level REST Client

Java Low Level REST Client tüm Elasticsearch sürümleriyle çalışır. Geniş sürüm uyumluluğuna ihtiyaç duyduğunuzda veya istek serileştirme üzerinde tam kontrol sağlamak istediğinizde bu istemciyi kullanın.

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

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-client</artifactId>
  <version>6.7.0</version>
</dependency>

Gradle için şunu ekleyin:

dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-client:6.7.0'
}
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;

public class LowLevelRestClientExample {

    public static void main(String[] args) throws Exception {
        // Set up credentials
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials("<UserName>", "<YourPassword>"));

        // Create the client
        RestClient client = RestClient.builder(
            new HttpHost("<YourEsHost>", 9200, "http"))
            .setHttpClientConfigCallback(
                (HttpAsyncClientBuilder httpClientBuilder) ->
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
            .build();

        // Use the client to send requests...

        client.close();
    }
}

İlgili konular