Escrevendo queries no Elasticsearch utilizando .NET e NEST

O Elasticsearch fornece um conjunto poderoso de opções para consulta de documentos em diversos cenários, portanto, é importante saber qual consulta aplicar em cada caso específico. Neste artigo, demonstro de forma simples as principais operações de leitura do Elasticsearch, utilizando o .NET e o package NEST.

Mais informações sobre Elasticsearch você encontra aqui e aqui.

Pré-requisitos

  • Visual Studio 2022 (.NET 6.0)
  • Docker
  • Nuget package NEST

Configurando a API

O primeiro passo é configurar o docker compose na API com as imagens do Elasticsearch e Kibana:

Em seguida, é preciso configurar a connection string no arquivo appsettings.json:

  "ElasticsearchSettings": {
    "uri": "http://localhost:9200",
    "defaultIndex": "indexactors",
    "username": "elastic",
    "password": "MagicWord"
  }

E registrar a injeção de dependência na classe program.cs para realizar a conexão com o banco Elasticserach:

Abaixo são apresentados os principais tipos de consultas do Elasticsearch.

Term

Match

Multi Match

Match Phrase

Match Phrase Prefix

Wildcard

Fuzzy

Range

Multiples Conditions

  • Utilizado em consultas com várias condições
  • Possível de utilizar o “&&” para condições AND e “||” para condições OR.

Testando as consultas

Para realizar os testes é preciso executar o comando docker compose na pasta raiz do projeto:

docker-compose up

Em seguida, execute o projeto WebApi, onde é possível realizar as principais operações de consulta com o banco Elasticsearch. (É necessário chamar o endpoint /api/actors/sample para preencher a base com dados de exemplo)

Finalizando

Neste artigo aprendemos a configurar e utilizar o Elasticsearch em .NET com o package NEST e os principais tipos de consultas. Existem muitas outras opções disponíveis, assim como configurações de filtros, analyzer e tokenizer, que serão abordados nos próximos artigos.

Os detalhes completos deste exemplo você encontra no meu GitHub: https://github.com/hgmauri/elasticsearch-with-nest

Deixe uma resposta