Elasticsearch.Net vs NEST
Tags: elasticsearch, nest, dotnet, nuget
Published: 2022-11-02 00:34:27

![ELK Stack: Kibana, Elasticsearch, Beats, Logstash](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/38b3yh3zbfmxha2pyne3.png)

## ¿Qué es Elasticsearch?
[Elasticsearch](https://www.elastic.co/es/what-is/elasticsearch) es un motor de búsqueda y analítica distribuido, gratuito y abierto para todos los tipos de datos, incluidos textuales, numéricos, geoespaciales, estructurados y no estructurados.

Conocido por sus API REST simples, naturaleza distribuida, velocidad y escalabilidad, Elasticsearch es el componente principal del Elastic Stack, un conjunto de herramientas gratuitas y abiertas para la ingesta, el enriquecimiento, el almacenamiento, el análisis y la visualización de datos.


## Elasticsearch en proyectos .NET
Si nuestro propósito es interactuar con motores de búsqueda de texto completo de Elasticsearch desde nuestras aplicaciones en .NET, podemos disponer de los dos clientes oficiales de Elastic y su comunidad:

- **Elasticsearch.Net** > Cliente de bajo nivel, libre de dependencias, permite interactuar directamente con el Elasticsearch API a través de métodos, además provee de mecanismos de reintento
- **NEST** > Cliente de alto nivel, con un nivel de abstracción mayor permitiendo consultas fuertemente tipadas mediante Query DSL. Internamente usa y expone al cliente de Elasticsearch.Net


## Instalación desde Visual Studio

Disponemos de dos vías para instalar ambos clientes:

**Desde la _Consola del Administrador de Paquetes_**

Desplegando el menú "Herramientas" en Visual Studio:
![Package Manager Console](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7c2ju94sqvk6iphyp18.png)
Comando para cliente Elasticsearch.Net:

```
PM> Install-Package Elasticsearch.Net
```
Comando para cliente NEST:
```
PM> Install-Package NEST
```
**Desde la _interfaz de usuario del administrador de paquetes NuGet_**
Click derecho sobre el proyecto o bien sobre la solución, y seleccionando en el menú contextual:

![Manage NuGet Package](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/snxj6pp3qu4p15400qw4.png)
Posterior podemos usar el buscador para seleccionar e instalar los paquetes NuGet correspondientes:

![NuGet Package Manager - Browser](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xfiyfmo2rzlaosiphubm.png)


## Versión 8.x Prerelease

**IMPORTANTE:** _La versión 7.17 se corresponde al último release estable de estos dos clientes oficiales para .NET, a partir de la versión 8.x se desarrolla un único cliente llamado <u>Cliente .NET para Elasticsearch</u>_

Aunque la versión 8.x se encuentra actualmente en versión prerelease, desde Visual Studio podemos instalarlo de la siguiente manera:
**Desde la _Consola del Administrador de Paquetes_**
Utilizando el siguiente comando:
```
PM> Install-Package Elastic.Clients.Elasticsearch -IncludePrerelease
```
**Desde la _interfaz de usuario del administrador de paquetes NuGet_**
Utilizando el buscador e incluyendo versiones prerelease:

![Elastic.Clients.Elasticsearch version 8.x](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/57uc5q1kz4rdp8irz6ch.png)


## Recursos útiles

Si quieres profundizar más sobre cómo preparar un ambiente local con Elasticsearch y cómo interactuar con él desde tus proyectos .NET, puede resultarte útil la siguiente sesión compartida en el canal oficial de la comunidad de Elastic:
{% embed https://www.youtube.com/embed/ik8a0JeIERQ %}

Más información de cada uno de los clientes oficiales que Elastic dispone para .NET en su version 7.17: 
- [Documentación de Elasticsearch.Net](https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.17/elasticsearch-net-getting-started.html)
- [Documentación de NEST](https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.17/nest-getting-started.html)

Más información de la nueva versión 8.x del cliente .NET para Elasticsearch puedes indagar:
- [Documentación de Cliente .NET para Elasticsearch v 8.x](https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/installation.html)


## ¿Tienes algún comentario?

Gracias por tu tiempo, espero éste artículo te haya resultado útil. Si tienes comentarios, por favor compártelos. 😉
_Te invito a seguirme en [Twitter](https://twitter.com/jjorozcodev) y/o contactarme en [LinkedIn](https://www.linkedin.com/in/jjorozcodev/)._