Client Elasticsearch pour C# (.NET) : NEST et Elastic.Clients.Elasticsearch

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 C# (.NET) : NEST et Elastic.Clients.Elasticsearch



Elasticsearch est un puissant système de recherche et d'analyse distribué basé sur Apache Lucene. Pour interagir avec lui depuis des applications C# (.NET), il existe plusieurs clients officiels et tiers. Dans cet article, nous examinerons en détail deux bibliothèques principales : NEST (client haut niveau) et Elastic.Clients.Elasticsearch (nouveau client officiel d'Elastic). Vous apprendrez à les installer, configurer et utiliser pour l'indexation, la recherche et la gestion des données.



1. NEST — client haut niveau (recommandé pour les projets complexes)



NEST est un client ancien mais éprouvé qui fournit une API fortement typée utilisant des classes POCO. Il sérialise/désérialise automatiquement le JSON en objets C# et prend en charge la syntaxe fluent pour la construction de requêtes.



Installation

dotnet add package NEST


Exemple d'utilisation de NEST

using Nest;using System;

// Classe POCO pour le documentpublic class Article{ public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } public DateTime PublishDate { get; set; }}

class Program{ static async Task Main(string[] args) { // Configuration de la connexion var settings = new ConnectionSettings(new Uri("http://localhost:9200")) .DefaultIndex("articles") .EnableDebugMode(); // Active la journalisation des requêtes

var client = new ElasticClient(settings);

// 1. Indexation d'un document var article = new Article { Id = 1, Title = "Elasticsearch en C#", Content = "Guide détaillé pour travailler avec Elasticsearch depuis .NET", PublishDate = DateTime.UtcNow };

var indexResponse = await client.IndexDocumentAsync(article); Console.WriteLine($"Indexation : {indexResponse.IsValid}");

// 2. Recherche var searchResponse = await client.SearchAsync<Article>(s => s .Query(q => q .Match(m => m .Field(f => f.Title) .Query("Elasticsearch") ) ) );

foreach (var hit in searchResponse.Hits) { Console.WriteLine($"Trouvé : {hit.Source.Title}"); } }}


2. Elastic.Clients.Elasticsearch — nouveau client officiel



À partir de la version 8.x, Elastic a publié un nouveau client Elastic.Clients.Elasticsearch (également appelé Elasticsearch.Net). Il est plus léger, asynchrone et compatible avec les dernières versions d'Elasticsearch. Contrairement à NEST, il n'exige pas l'utilisation obligatoire de classes POCO, bien qu'il les prenne en charge.



Installation

dotnet add package Elastic.Clients.Elasticsearch


Exemple d'utilisation du nouveau client

using Elastic.Clients.Elasticsearch;using Elastic.Clients.Elasticsearch.QueryDsl;using System;

class Program{ static async Task Main(string[] args) { // Configuration de la connexion var settings = new ElasticsearchClientSettings(new Uri("http://localhost:9200")) .DefaultIndex("articles");

var client = new ElasticsearchClient(settings);

// 1. Indexation avec POCO var article = new Article { Id = 2, Title = "Nouveau client Elasticsearch", Content = "Aperçu des fonctionnalités d'Elastic.Clients.Elasticsearch", PublishDate = DateTime.UtcNow };

var indexResponse = await client.IndexAsync(article, idx => idx.Index("articles")); Console.WriteLine($"Indexation : {indexResponse.IsValidResponse}");

// 2. Recherche avec syntaxe lambda var se

Recommendations