Elasticsearch-Client für Java: Vollständige Anleitung zur Arbeit mit dem Java Client

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Elasticsearch-Client für Java: Vollständige Anleitung

\n\n

Elasticsearch ist ein leistungsstarkes verteiltes Such- und Analysesystem auf Basis von Apache Lucene. Für die Integration mit Java-Anwendungen bietet Elastic den offiziellen Elasticsearch Java Client (früher bekannt als High-Level REST Client). In diesem Artikel werden wir im Detail erläutern, wie dieser Client für grundlegende Operationen verwendet wird: Verbindung, Indexierung von Dokumenten, CRUD-Operationen und Volltextsuche.

\n\n

Was ist der Elasticsearch Java Client?

\n\n

Der Elasticsearch Java Client ist eine moderne, typsichere API für die Interaktion mit Elasticsearch aus Java. Er basiert auf einem asynchronen HTTP-Client und unterstützt alle Elasticsearch-Versionen ab 7.x. Die Hauptvorteile sind:

\n\n
    \n
  • Vollständige Unterstützung aller Elasticsearch-APIs (Indizierung, Suche, Aggregationen, Cluster-Verwaltung).
  • \n
  • Asynchronität und Reaktivität — integrierte Unterstützung für CompletableFuture und reaktive Streams.
  • \n
  • Typsichere DSL-Abfragen — Minimierung von Fehlern zur Kompilierzeit.
  • \n
  • Einfache Konfiguration — minimale Anzahl von Abhängigkeiten.
  • \n
\n\n

Installation und Konfiguration

\n\n

Um den Client zu einem Maven-Projekt hinzuzufügen, fügen Sie die folgende Abhängigkeit in Ihre pom.xml ein:

\n\n
<dependency>\n    <groupId>co.elastic.clients</groupId>\n    <artifactId>elasticsearch-java</artifactId>\n    <version>8.15.0</version>\n</dependency>
\n\n

Für Gradle (build.gradle):

\n\n
implementation 'co.elastic.clients:elasticsearch-java:8.15.0'
\n\n

Außerdem wird Jackson für die Serialisierung/Deserialisierung von JSON benötigt:

\n\n
<dependency>\n    <groupId>com.fasterxml.jackson.core</groupId>\n    <artifactId>jackson-databind</artifactId>\n    <version>2.17.0</version>\n</dependency>
\n\n

Erstellung des Clients und Verbindung

\n\n

Um den Client zu erstellen, müssen der Host und der Port von Elasticsearch angegeben werden. Beispiel einer Basiskonfiguration:

\n\n
import co.elastic.clients.elasticsearch.ElasticsearchClient;\nimport co.elastic.clients.json.jackson.JacksonJsonpMapper;\nimport co.elastic.clients.transport.rest_client.RestClientTransport;\nimport org.apache.http.Header;\nimport org.apache.http.message.BasicHeader;\nimport org.elasticsearch.client.RestClient;\n\npublic class ElasticsearchExample {\n\n    public static ElasticsearchClient createClient() {\n        // Erstellen des Low-Level REST-Clients\n        RestClient restClient = RestClient.builder(\n                new HttpHost("localhost", 9200, "http")\n        ).setDefaultHeaders(new Header[]{\n                new BasicHeader("Content-Type", "application/json")\n        }).build();\n\n        // Transport mit Jackson-Mapper\n        RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());\n\n        // High-Level-Client\n        return new ElasticsearchClient(transport);\n    }\n\n    public static void main(String[] args) throws IOException {\n        ElasticsearchClient client = createClient();\n        System.out.println("Client erfolgreich erstellt!");\n        client.close();\n    }\n}
\n\n

Arbeit mit Indizes

\n\n

Vor Beginn der Arbeit muss ein Index erstellt werden. Betrachten wir ein Beispiel für die Erstellung eines Index mit Mapping:

\n\n
public static void createIndex(ElasticsearchClient client, String indexName) throws IOException {\n    client.indices().create(c -> c\n            .index(indexName)\n            .mappings(m -> m\n                    .properties("title", p -> p.text(t -> t))\n                    .properties("content", p -> p.text(t -> t))\n                    .properties("price", p -> p.double_(d -> d))\n                    .properties("createdAt", p -> p.date(d -> d))\n                    

Empfehlungen