„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Verbessern Sie Ihr Elasticsearch-Erlebnis mit Java High Level REST Client ()

Verbessern Sie Ihr Elasticsearch-Erlebnis mit Java High Level REST Client ()

Veröffentlicht am 01.08.2024
Durchsuche:713

Elevate Your Elasticsearch Experience with Java High Level REST Client ()

Einführung

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.

Vorbereitungen

Schritt 1: Erstellen Sie einen 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.

Schritt 2: Aktivieren Sie die automatische Indizierung

Aktivieren Sie die Funktion zur automatischen Indizierung in der YAML-Konfigurationsdatei. Einzelheiten finden Sie unter Konfigurieren der YML-Datei.

Schritt 3: Konfigurieren Sie die Whitelist für IP-Adressen

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.

Schritt 4: JDK installieren

Installieren Sie Java Development Kit (JDK) Version 1.8 oder höher. Weitere Informationen finden Sie unter JDK installieren.

Schritt 5: Erstellen Sie ein Java Maven-Projekt

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

Beispiel: Verwalten eines Index

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 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();
        }
    }
}

Konfiguration mit hoher Parallelität

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.

Abschluss

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

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/a_lucas/elevate-your-elasticsearch-experience-with-java-high-level-rest-client-7x-348k?1 Bei Verstößen wenden Sie sich bitte an Study_golang @163.com löschen
Neuestes Tutorial Mehr>

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