Elasticsearch-Client für Java: Vollständige Anleitung
\n\nElasticsearch 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\nWas ist der Elasticsearch Java Client?
\n\nDer 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
Installation und Konfiguration
\n\nUm den Client zu einem Maven-Projekt hinzuzufügen, fügen Sie die folgende Abhängigkeit in Ihre pom.xml ein:
<dependency>\n <groupId>co.elastic.clients</groupId>\n <artifactId>elasticsearch-java</artifactId>\n <version>8.15.0</version>\n</dependency>\n\nFür Gradle (build.gradle):
\n\nimplementation 'co.elastic.clients:elasticsearch-java:8.15.0'\n\nAuß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\nErstellung des Clients und Verbindung
\n\nUm den Client zu erstellen, müssen der Host und der Port von Elasticsearch angegeben werden. Beispiel einer Basiskonfiguration:
\n\nimport 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\nArbeit mit Indizes
\n\nVor Beginn der Arbeit muss ein Index erstellt werden. Betrachten wir ein Beispiel für die Erstellung eines Index mit Mapping:
\n\npublic 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 Auch in der Bibliothek
Spectre.Console für C# (.NET): Komplettes Tutorial mit Beispielen
Objektserialisierung in Kotlin: Bibliotheken und Codebeispiele
Arbeiten mit Excel in C# (.NET): Bibliotheken EPPlus und ClosedXML
Testen in Java: Frameworks und Tools (JUnit, TestNG, Mockito)