Guia completo de Elasticsearch .NET para C# com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Elasticsearch .NET para C# (.NET): guia completo com exemplos

1. O que é e para que serve

Elasticsearch .NET (NEST) é o cliente oficial de alto nível para integrar o mecanismo de busca Elasticsearch em aplicações C# e outras linguagens da plataforma .NET. A biblioteca oferece uma API fortemente tipada que permite realizar todas as operações com Elasticsearch: indexação de documentos, busca, agregações, gerenciamento de índices e mapeamentos, utilizando padrões familiares para desenvolvedores .NET (LINQ, métodos assíncronos, serialização com System.Text.Json ou Newtonsoft.Json).

Para que serve esta biblioteca? Elasticsearch é um poderoso sistema distribuído de busca em texto completo e análise em tempo real. Se sua aplicação em C# precisa realizar buscas complexas em grandes volumes de dados (logs, produtos, documentos), processar consultas analíticas (agregações) ou gerenciar um cluster Elasticsearch programaticamente, o NEST é a escolha padrão. Ele abstrai os detalhes de baixo nível das requisições HTTP e da serialização JSON, fornecendo uma interface fluente e tipagem forte.

A biblioteca suporta todas as versões do Elasticsearch a partir da 6.x e é compatível com .NET Standard 2.0, podendo ser usada em projetos .NET Framework 4.6.1+, .NET Core 2.0+ e .NET 5/6/7/8/9. O NEST é ativamente mantido pela Elastic e pela comunidade, com documentação detalhada e muitos exemplos disponíveis.

2. Instalação

A instalação é feita via NuGet Package Manager. Use um dos comandos abaixo:

// Via .NET CLI
dotnet add package NEST

// Via Package Manager Console
Install-Package NEST

// Ou pela interface do NuGet: procure por "NEST" e instale a versão estável mais recente

Você também pode instalar o cliente de baixo nível Elasticsearch.Net, mas o NEST já o inclui como dependência.

3. Início rápido — exemplo mínimo funcional

Crie um aplicativo console .NET e adicione as diretivas using:

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

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

        // 2. Definição do modelo de dados
        var document = new Product
        {
            Id = 1,
            Name = "Notebook",
            Description = "Notebook gamer potente",
            Price = 1500.99
        };

        // 3. Indexação do documento
        var indexResponse = await client.IndexAsync(document, idx => idx.Index("products"));
        if (indexResponse.IsValid)
            WriteLine($"Documento indexado: {indexResponse.Id}");

        // 4. Busca do documento
        var searchResponse = await client.SearchAsync(s => s
            .Index("products")
            .Query(q => q
                .Match(m => m
                    .Field(f => f.Name)
                    .Query("notebook")
                )
            )
        );

        foreach (var hit in searchResponse.Hits)
        {
            WriteLine($"Encontrado: {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. Principais métodos/funções/classes

4.1. ElasticClient.IndexAsync

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

O que faz: Indexa (adiciona ou atualiza) um documento no índice especificado. Se um documento com o mesmo ID já existir, ele será substituído.

Recommendations