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 NESTExemple 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.ElasticsearchExemple 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 Aussi dans la bibliothèque
Génération de PDF en C++ : aperçu des bibliothèques et exemples de code
TypeBox pour TypeScript : guide complet avec exemples
ARKit Swift : guide complet avec exemples
Client Redis pour Node.js : ioredis — guide complet
Travailler avec Kafka en Java : bibliothèques, configuration et exemples de code