Client Elasticsearch pour Java : guide complet
\n\nElasticsearch 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\nQu'est-ce que le Client Java Elasticsearch ?
\n\nLe 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
Installation et configuration
\n\nPour ajouter le client à un projet Maven, ajoutez la dépendance suivante dans pom.xml :
<dependency>\n <groupId>co.elastic.clients</groupId>\n <artifactId>elasticsearch-java</artifactId>\n <version>8.15.0</version>\n</dependency>\n\nPour Gradle (build.gradle) :
\n\nimplementation 'co.elastic.clients:elasticsearch-java:8.15.0'\n\nJackson 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\nCréation du client et connexion
\n\nPour créer le client, il faut spécifier l'hôte et le port d'Elasticsearch. Exemple de configuration de base :
\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 // 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\nGestion des index
\n\nAvant de commencer, il est nécessaire de créer un index. Voici un exemple de création d'index avec un 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 Aussi dans la bibliothèque
WebSocket en C++ : bibliothèques et applications pratiques
Parsing HTML en PHP : Guide complet des bibliothèques et outils
Autorisation et authentification en PHP : guide complet avec exemples