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 NESTExemplo 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.ElasticsearchExemplo 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 Também na biblioteca
Cliente HTTP para C++: as melhores bibliotecas para trabalhar com rede
Internacionalização (i18n) em C++: guia completo com gettext e ICU
Event Bus e padrão Observer em TypeScript: implementação e exemplos