Client REST Elasticsearch pour Kotlin : guide d'utilisation

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 Kotlin : un outil puissant pour la recherche et l'analyse



Elasticsearch est un système de recherche et d'analyse distribué basé sur Apache Lucene, qui permet d'effectuer rapidement des recherches en texte intégral, des agrégations et l'analyse de grands volumes de données. Pour travailler avec Elasticsearch depuis des applications Kotlin, il existe plusieurs clients, mais le plus moderne et recommandé est le Elasticsearch Java Client (à partir de la version 7.16) avec une prise en charge complète de Kotlin. Dans cet article, nous aborderons son installation, sa configuration et les opérations de base.



Installation et connexion



Pour commencer, ajoutez la dépendance dans votre build.gradle.kts :



dependencies {    implementation("co.elastic.clients:elasticsearch-java:8.15.0")    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.0")    implementation("jakarta.json:jakarta.json-api:2.1.3")}


Pour Maven (pom.xml) :



<dependency>    <groupId>co.elastic.clients</groupId>    <artifactId>elasticsearch-java</artifactId>    <version>8.15.0</version></dependency><dependency>    <groupId>com.fasterxml.jackson.module</groupId>    <artifactId>jackson-module-kotlin</artifactId>    <version>2.17.0</version></dependency>


Création du client



La bibliothèque utilise le modèle Builder pour la configuration. Voici un exemple de création d'un client avec connexion à une instance locale d'Elasticsearch :



import co.elastic.clients.elasticsearch.ElasticsearchClientimport co.elastic.clients.json.jackson.JacksonJsonpMapperimport co.elastic.clients.transport.ElasticsearchTransportimport co.elastic.clients.transport.rest_client.RestClientTransportimport org.apache.http.HttpHostimport org.elasticsearch.client.RestClient

fun createElasticsearchClient(): ElasticsearchClient { // Création du client HTTP (sans authentification) val restClient = RestClient.builder( HttpHost("localhost", 9200, "http") ).build()

// Création du transport avec le mapper JSON Jackson val transport: ElasticsearchTransport = RestClientTransport( restClient, JacksonJsonpMapper() )

// Retourne le client prêt à l'emploi return ElasticsearchClient(transport)}


Pour un environnement de production, il est recommandé d'utiliser l'authentification et HTTPS :



val credentialsProvider = BasicCredentialsProvider()credentialsProvider.setCredentials(    AuthScope.ANY,    UsernamePasswordCredentials("elastic", "your_password"))

val restClient = RestClient.builder( HttpHost("your-cluster.com", 9243, "https")).setHttpClientConfigCallback { httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)}.build()


Gestion des index



Avant d'effectuer des opérations sur les documents, vous devez créer un index (s'il n'existe pas). Exemple de création d'un index avec un mapping :



suspend fun createIndex(client: ElasticsearchClient, indexName: String) {    val response = client.indices().create { createBuilder ->        createBuilder            .index(indexName)            .mappings { mappings ->                mappings                    .properties("title") { prop -> prop.text { it } }                    .properties("content") { prop -> prop.text { it } }                    .properties("timestamp") { prop -> prop.date { it } }            }    }    println("Index créé : ${response.acknowledged}")}


Opérations CRUD sur les documents



Création/mise à jour d'un document (API Index)



data class Article(    val title: String,    val content: String,    val timestamp: String = java.time.Instant.now().toString())

suspend fun indexDocument(client: E

Recommendations