Cliente Elasticsearch para C# (.NET): NEST e Elastic.Clients.Elasticsearch

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

Cliente Elasticsearch para C# (.NET): NEST e Elastic.Clients.Elasticsearch



Elasticsearch é um poderoso sistema de busca e análise distribuído baseado no Apache Lucene. Para trabalhar com ele a partir de aplicações C# (.NET), existem vários clientes oficiais e de terceiros. Neste artigo, abordaremos detalhadamente duas bibliotecas principais: NEST (cliente de alto nível) e Elastic.Clients.Elasticsearch (novo cliente oficial da Elastic). Você aprenderá como instalar, configurar e usá-los para indexação, pesquisa e gerenciamento de dados.



1. NEST — Cliente de alto nível (recomendado para projetos complexos)



NEST é um cliente antigo, mas testado, que fornece uma API fortemente tipada usando classes POCO. Ele serializa/desserializa automaticamente JSON em objetos C# e suporta sintaxe fluente para construção de consultas.



Instalação

dotnet add package NEST


Exemplo de uso do NEST

using Nest;using System;

// Classe POCO para o documentopublic 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) { // Configuração da conexão var settings = new ConnectionSettings(new Uri("http://localhost:9200")) .DefaultIndex("articles") .EnableDebugMode(); // Ativa o registro de consultas

var client = new ElasticClient(settings);

// 1. Indexação de documento var article = new Article { Id = 1, Title = "Elasticsearch em C#", Content = "Guia detalhado sobre como trabalhar com Elasticsearch a partir do .NET", PublishDate = DateTime.UtcNow };

var indexResponse = await client.IndexDocumentAsync(article); Console.WriteLine($"Indexação: {indexResponse.IsValid}");

// 2. Pesquisa 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($"Encontrado: {hit.Source.Title}"); } }}


2. Elastic.Clients.Elasticsearch — Novo cliente oficial



A partir da versão 8.x, a Elastic lançou um novo cliente Elastic.Clients.Elasticsearch (também conhecido como Elasticsearch.Net). Ele é mais leve, assíncrono e compatível com as versões mais recentes do Elasticsearch. Ao contrário do NEST, ele não exige o uso obrigatório de classes POCO, embora as suporte.



Instalação

dotnet add package Elastic.Clients.Elasticsearch


Exemplo de uso do novo cliente

using Elastic.Clients.Elasticsearch;using Elastic.Clients.Elasticsearch.QueryDsl;using System;

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

var client = new ElasticsearchClient(settings);

// 1. Indexação com POCO var article = new Article { Id = 2, Title = "Novo cliente Elasticsearch", Content = "Visão geral dos recursos do Elastic.Clients.Elasticsearch", PublishDate = DateTime.UtcNow };

var indexResponse = await client.IndexAsync(article, idx => idx.Index("articles")); Console.WriteLine($"Indexação: {indexResponse.IsValidResponse}");

// 2. Pesquisa usando sintaxe lambda var se

Recommendations