Java High Level REST Client (7.x) ist ein leistungsstarkes Tool für die Interaktion mit Elasticsearch-Clustern, das die Serverkommunikation zugänglicher und effizienter macht. In diesem Leitfaden führen wir Sie durch die Schritte zur Verwendung des High-Level-REST-Clients zum Aufrufen von Elasticsearch-Java-APIs auf einem Alibaba Cloud Elasticsearch-Cluster.
Stellen Sie sicher, dass Ihre Clusterversion mit der Java High Level REST Client-Version, die Sie verwenden möchten, identisch oder neuer ist. Eine Schritt-für-Schritt-Anleitung finden Sie unter Erstellen eines Alibaba Cloud Elasticsearch-Clusters.
Aktivieren Sie die Funktion zur automatischen Indizierung in der YAML-Konfigurationsdatei. Einzelheiten finden Sie unter Konfigurieren der YML-Datei.
Stellen Sie eine ordnungsgemäße Kommunikation sicher, indem Sie eine IP-Adress-Whitelist konfigurieren. Wenn Sie über das Internet auf den Cluster zugreifen, lassen Sie Anfragen von den erforderlichen IP-Adressen zu, indem Sie die Richtlinien unter Konfigurieren einer Whitelist für öffentliche oder private IP-Adressen befolgen.
Installieren Sie Java Development Kit (JDK) Version 1.8 oder höher. Weitere Informationen finden Sie unter JDK installieren.
Fügen Sie die erforderlichen Abhängigkeiten zu Ihrer pom.xml-Datei hinzu. Ändern Sie die Versionsnummer in den Abhängigkeiten von 7.x auf die spezifische Version des High Level REST Clients, den Sie verwenden.
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.x</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.20.0</version> </dependency>
Unten finden Sie ein Beispiel für das Erstellen und Löschen eines Index mit dem High Level REST Client. Ersetzen Sie die Platzhalter {} durch Ihre spezifischen Parameter.
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 RestClientExample { private static final RequestOptions COMMON_OPTIONS; static { RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); builder.setHttpAsyncResponseConsumerFactory( new HttpAsyncResponseConsumerFactory .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024)); COMMON_OPTIONS = builder.build(); } public static void main(String[] args) { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("{Username}", "{Password}")); RestClientBuilder builder = RestClient.builder(new HttpHost("{Endpoint of the Elasticsearch cluster}", 9200, "http")) .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }); RestHighLevelClient highClient = new RestHighLevelClient(builder); try { Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("{field_01}", "{value_01}"); jsonMap.put("{field_02}", "{value_02}"); IndexRequest indexRequest = new IndexRequest("{index_name}", "_doc", "{doc_id}").source(jsonMap); IndexResponse indexResponse = highClient.index(indexRequest, COMMON_OPTIONS); long version = indexResponse.getVersion(); System.out.println("Index document successfully! " + version); DeleteRequest deleteRequest = new DeleteRequest("{index_name}", "_doc", "{doc_id}"); DeleteResponse deleteResponse = highClient.delete(deleteRequest, COMMON_OPTIONS); System.out.println("Delete document successfully! \n" + deleteResponse.toString()); highClient.close(); } catch (IOException ioException) { ioException.printStackTrace(); } } }
Erhöhen Sie für Szenarien mit hoher Parallelität die Anzahl der Clientverbindungen:
httpClientBuilder.setMaxConnTotal(500); httpClientBuilder.setMaxConnPerRoute(300);
Beispielcode-Snippet:
String host = "127.0.0.1"; int port = 9200; String username = "elastic"; String password = "passwd"; final int max_conn_total = 500; final int max_conn_per_route = 300; RestHighLevelClient restHighLevelClient = new RestHighLevelClient( RestClient.builder(new HttpHost(host, port, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { httpClientBuilder.setMaxConnTotal(max_conn_total); httpClientBuilder.setMaxConnPerRoute(max_conn_per_route); return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }) );
Weitere Einzelheiten zu Funktionen und Konfigurationen finden Sie in der offiziellen Java High Level REST Client-Dokumentation.
Die Verwendung des Java High Level REST Client gewährleistet eine effiziente Interaktion mit Ihrem Alibaba Cloud Elasticsearch-Cluster. Befolgen Sie diese Anleitung, um das Beste aus Ihrem Elasticsearch-Setup herauszuholen.
Bereit, Ihre Reise mit Elasticsearch auf Alibaba Cloud zu beginnen? Entdecken Sie unsere maßgeschneiderten Cloud-Lösungen und -Dienste, um Ihre Daten in ein visuelles Meisterwerk zu verwandeln.
Klicken Sie hier, um mit Ihrer 30-tägigen kostenlosen Testversion zu beginnen
Das obige ist der detaillierte Inhalt vonVerbessern Sie Ihr Elasticsearch-Erlebnis mit dem Java High Level REST Client (). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!