Heim >Web-Frontend >js-Tutorial >Verbessern Sie Ihr Elasticsearch-Erlebnis mit dem Java High Level REST Client ()

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

PHPz
PHPzOriginal
2024-07-18 09:01:00662Durchsuche

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.

<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>

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

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 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn