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.
org.elasticsearch.client elasticsearch-rest-high-level-client 7.x org.apache.logging.log4j log4j-core 2.20.0 org.apache.logging.log4j log4j-api 2.20.0
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 { MapjsonMap = 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 Ihre 30-tägige kostenlose Testversion zu starten
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3