Elasticsearch-Client für C# (.NET): NEST und Elastic.Clients.Elasticsearch
Elasticsearch ist ein leistungsstarkes, verteiltes Such- und Analysesystem auf Basis von Apache Lucene. Für die Arbeit damit aus C# (.NET)-Anwendungen gibt es mehrere offizielle und Drittanbieter-Clients. In diesem Artikel betrachten wir zwei Hauptbibliotheken im Detail: NEST (High-Level-Client) und Elastic.Clients.Elasticsearch (neuer offizieller Client von Elastic). Sie erfahren, wie Sie diese installieren, konfigurieren und für die Indizierung, Suche und Datenverwaltung nutzen.
1. NEST — High-Level-Client (empfohlen für komplexe Projekte)
NEST ist ein alter, aber bewährter Client, der eine streng typisierte API mit POCO-Klassen bereitstellt. Er serialisiert/deserialisiert automatisch JSON in C#-Objekte und unterstützt eine Fluent-Syntax zum Erstellen von Abfragen.
Installation
dotnet add package NESTBeispiel zur Verwendung von NEST
using Nest;using System;
// POCO-Klasse für das Dokumentpublic 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) { // Verbindungskonfiguration var settings = new ConnectionSettings(new Uri("http://localhost:9200")) .DefaultIndex("articles") .EnableDebugMode(); // Aktiviert die Protokollierung von Anfragen
var client = new ElasticClient(settings);
// 1. Indizierung eines Dokuments var article = new Article { Id = 1, Title = "Elasticsearch in C#", Content = "Ausführlicher Leitfaden zur Arbeit mit Elasticsearch aus .NET", PublishDate = DateTime.UtcNow };
var indexResponse = await client.IndexDocumentAsync(article); Console.WriteLine($"Indizierung: {indexResponse.IsValid}");
// 2. Suche 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($"Gefunden: {hit.Source.Title}"); } }}2. Elastic.Clients.Elasticsearch — neuer offizieller Client
Ab Version 8.x hat Elastic den neuen Client Elastic.Clients.Elasticsearch (auch bekannt als Elasticsearch.Net) veröffentlicht. Er ist leichter, asynchron und entspricht den neuesten Versionen von Elasticsearch. Im Gegensatz zu NEST erfordert er nicht zwingend die Verwendung von POCO-Klassen, unterstützt diese jedoch.
Installation
dotnet add package Elastic.Clients.ElasticsearchBeispiel zur Verwendung des neuen Clients
using Elastic.Clients.Elasticsearch;using Elastic.Clients.Elasticsearch.QueryDsl;using System;
class Program{ static async Task Main(string[] args) { // Verbindungskonfiguration var settings = new ElasticsearchClientSettings(new Uri("http://localhost:9200")) .DefaultIndex("articles");
var client = new ElasticsearchClient(settings);
// 1. Indizierung mit POCO var article = new Article { Id = 2, Title = "Neuer Elasticsearch-Client", Content = "Überblick über die Funktionen von Elastic.Clients.Elasticsearch", PublishDate = DateTime.UtcNow };
var indexResponse = await client.IndexAsync(article, idx => idx.Index("articles")); Console.WriteLine($"Indizierung: {indexResponse.IsValidResponse}");
// 2. Suche mit Lambda-Syntax var se Auch in der Bibliothek
Elasticsearch C++-Client: Vollständiger Leitfaden für die Arbeit mit der Suchmaschine
Swift QR-Code-Generator: Core Image, CIFilter und eigene Lösungen
CLI-Frameworks für Kotlin: Clikt, kotlinx-cli, picocli – Überblick und Vergleich
GraphQL Java: Vollständiger Leitfaden zur Bibliothek für die Erstellung von APIs in Java
Bibliothek cpp-httplib: OAuth 2.0-Client in C++ für Webanwendungen