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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
Tüm istemci türlerini kapsayan örnek kodlar için bkz. Overview.
Küme parolanızı sıfırlamak için bkz. Reset the access password for an Elasticsearch cluster.