Elasticsearch .NET für C#: Vollständiges Tutorial mit Praxisbeispielen

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 .NET für C#: Vollständiges Tutorial mit Praxisbeispielen

1. Was ist Elasticsearch .NET und warum braucht man es?

Elasticsearch .NET (NEST) ist der offizielle High-Level-Client für die Arbeit mit der Suchmaschine Elasticsearch aus C#-Anwendungen und anderen .NET-Sprachen. Die Bibliothek bietet eine stark typisierte API, mit der Sie alle Elasticsearch-Operationen ausführen können: Dokumentenindexierung, Suche, Aggregationen sowie die Verwaltung von Indizes und Mappings – und das mit vertrauten .NET-Entwicklungsmustern (LINQ, asynchrone Methoden, Serialisierung via System.Text.Json oder Newtonsoft.Json).

Warum ist diese Bibliothek wichtig? Elasticsearch ist ein leistungsstarkes, verteiltes System für Volltextsuche und Echtzeit-Analysen. Wenn Ihre C#-Anwendung komplexe Suchen über große Datenmengen (Logs, Produkte, Dokumente) durchführen, analytische Abfragen (Aggregationen) verarbeiten oder einen Elasticsearch-Cluster programmatisch verwalten muss, ist NEST die Standardwahl. Es verbirgt die Low-Level-Details von HTTP-Anfragen und JSON-Serialisierung und bietet ein flüssiges Interface sowie strenge Typisierung.

Die Bibliothek unterstützt alle Elasticsearch-Versionen ab 6.x und ist mit .NET Standard 2.0 kompatibel. Das ermöglicht den Einsatz in Projekten mit .NET Framework 4.6.1+, .NET Core 2.0+ und .NET 5/6/7/8/9. NEST wird aktiv von Elastic und der Community weiterentwickelt und bietet eine umfangreiche Dokumentation sowie zahlreiche Beispiele.

2. Installation

Die Installation erfolgt über den NuGet Package Manager. Verwenden Sie einen der folgenden Befehle:

// Über .NET CLI
dotnet add package NEST

// Über Package Manager Console
Install-Package NEST

// Oder über die NuGet-Oberfläche: Nach "NEST" suchen und die neueste stabile Version installieren

Sie können auch den Low-Level-Client Elasticsearch.Net installieren, aber NEST enthält diesen bereits als Abhängigkeit.

3. Schnellstart – Minimales funktionierendes Beispiel

Erstellen Sie eine .NET-Konsolenanwendung und fügen Sie die using-Direktiven hinzu:

using System;
using System.Threading.Tasks;
using Nest;
using static System.Console;

public class Program
{
    public static async Task Main(string[] args)
    {
        // 1. Verbindung konfigurieren
        var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
            .DefaultIndex("my_index");
        
        var client = new ElasticClient(settings);

        // 2. Datenmodell definieren
        var document = new Product
        {
            Id = 1,
            Name = "Laptop",
            Description = "Leistungsstarker Gaming-Laptop",
            Price = 1500.99
        };

        // 3. Dokument indexieren
        var indexResponse = await client.IndexAsync(document, idx => idx.Index("products"));
        if (indexResponse.IsValid)
            WriteLine($"Dokument indexiert: {indexResponse.Id}");

        // 4. Dokument suchen
        var searchResponse = await client.SearchAsync(s => s
            .Index("products")
            .Query(q => q
                .Match(m => m
                    .Field(f => f.Name)
                    .Query("Laptop")
                )
            )
        );

        foreach (var hit in searchResponse.Hits)
        {
            WriteLine($"Gefunden: {hit.Source.Name} - {hit.Source.Price:C}");
        }
    }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public double Price { get; set; }
}

4. Wichtige Methoden/Funktionen/Klassen

4.1. ElasticClient.IndexAsync

Signatur: Task<IndexResponse> IndexAsync<T>(T document, Func<IndexDescriptor<T>, IIndexRequest<T>> selector = null, CancellationToken ct = default)

Funktion: Indexiert (fügt hinzu oder aktualisiert) ein Dokument im angegebenen Index. Wenn ein Dokument mit derselben ID bereits existiert, wird es überschrieben.

Empfehlungen