Client Elasticsearch pour Java : guide complet d'utilisation du Java Client

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client Elasticsearch pour Java : guide complet

\n\n

Elasticsearch est un puissant système de recherche et d'analyse distribué basé sur Apache Lucene. Pour l'intégrer dans des applications Java, la société Elastic fournit le Client Java Elasticsearch officiel (anciennement connu sous le nom de High-Level REST Client). Dans cet article, nous allons détailler comment utiliser ce client pour effectuer les opérations de base : connexion, indexation de documents, opérations CRUD et recherche en texte intégral.

\n\n

Qu'est-ce que le Client Java Elasticsearch ?

\n\n

Le Client Java Elasticsearch est une API moderne et typée pour interagir avec Elasticsearch depuis Java. Il est construit sur un client HTTP asynchrone et prend en charge toutes les versions d'Elasticsearch à partir de la 7.x. Principaux avantages :

\n\n
    \n
  • Prise en charge complète de toutes les API Elasticsearch (indexation, recherche, agrégations, gestion du cluster).
  • \n
  • Asynchronisme et réactivité — prise en charge intégrée de CompletableFuture et des flux réactifs.
  • \n
  • Requêtes DSL typées — minimisation des erreurs à la compilation.
  • \n
  • Configuration simple — nombre minimal de dépendances.
  • \n
\n\n

Installation et configuration

\n\n

Pour ajouter le client à un projet Maven, ajoutez la dépendance suivante dans pom.xml :

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

Pour Gradle (build.gradle) :

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

Jackson est également nécessaire pour la sérialisation/désérialisation JSON :

\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

Création du client et connexion

\n\n

Pour créer le client, il faut spécifier l'hôte et le port d'Elasticsearch. Exemple de configuration de base :

\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        // Création du client REST Low-Level\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 avec le mapper Jackson\n        RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());\n\n        // Client haut niveau\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 créé avec succès !");\n        client.close();\n    }\n}
\n\n

Gestion des index

\n\n

Avant de commencer, il est nécessaire de créer un index. Voici un exemple de création d'index avec un 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                    

Recommendations