Elasticsearch-Client für C# (.NET): NEST und Elastic.Clients.Elasticsearch

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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 NEST


Beispiel 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.Elasticsearch


Beispiel 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

Empfehlungen