DEV Community

Cover image for Elasticsearch, descobrindo!
Suspir0n
Suspir0n

Posted on

Elasticsearch, descobrindo!

Prontos para mais um diário de bordo? Hoje iremos decorrer sobre Elasticsearch, o que é, como é utilizado, por que utilizar e em qual momento deve ser utilizado e alguns exemplos práticos no final. O Elasticsearch é um mecanismo de busca e análise de dados, voltado para grandes volumes de dados.

O que é ElasticSearch

O que é ElasticSearch

Segundo o site oficial do Elastic "O Elasticsearch é um mecanismo de busca e análise de dados distribuído, gratuito e aberto para todos os tipos de dados, incluindo textuais, numéricos, geoespaciais, estruturados e não estruturados."

A forma de armazenamento que ele utiliza para textos é a estrutura de índice invertido, buscando uma palavra que seja única em todos os documentos que você tem salvo no elastic, quando ele já tem isso obtido, quando é realizado uma busca, ele retorna todos os documentos que tem aquela palavra única em todos os documentos que você passou. Entretanto campos numéricos e geográficos são armazenados em árvore BKD e campos de textos em índice invertido como relatei a cima.

Segundo Stringfixer "uma árvore KDB ( árvore B k- dimensional ) é uma estrutura de dados em árvore para subdividir um espaço de busca k- dimensional. O objetivo da árvore KDB é fornecer a eficiência de pesquisa de uma árvore kd balanceada , enquanto fornece o armazenamento orientado a blocos de uma árvore B para otimizar os acessos à memória externa."

A extração de dados, como ele faz é um de seus diferenciais, através do RestAPI conseguindo realizar de forma simples e rápido. Sua API suporta Queries Estruturadas, Full Text Queries e Queries Complexas. As consultas são criadas usando Query DSL(Domain Specific Language) uma linguagem de consulta baseada em json, temos que pensar em uma Query DSL em uma AST(Abstract Syntax Tree). Trarei logo abaixo o que é Query DSL e AST, um resumo de ambos.

Para que o Elasticsearch é usado?

Devido à velocidade, performance, escalabilidade, facilidade e integração com outras ferramentas que o elastic possui, ele pode ser usado para:

  • Busca em aplicação
  • Busca em website
  • Busca empresarial
  • Logging e analítica de log
  • Métricas de infraestrutura e monitoramento de container
  • APM (Monitoramento de performance de aplicação)
  • Análise e visualização de dados geoespaciais
  • Analítica de segurança
  • Análise de dados empresarial

O que é Query DSL?

O que é Query DSL?

O Querydsl é um framework java que permite gerar queries type-safe com sintaxe similar ao JPQL, SQL e outras suportadas.

O que é AST?

Segundo Twilio "Abstract Syntax Trees ou ASTs são representações em árvore do código. Eles são uma parte fundamental da maneira como um compilador funciona. Quando um compilador transforma algum código, existem fundamentalmente os seguintes passos:"

  • Análise Lexical - conhecida como Tokenização
  • Análise de sintaxe - Conhecida como analise
  • Geração de código

O que é AST?

Quais linguagens de programação têm suporte no Elasticsearch?

O Elasticsearch oferece suporte a uma variedade de linguagens, que são:

  • Java
  • JavaScript (Node.js)
  • Go
  • .NET (C#)
  • PHP
  • Perl
  • Python
  • Ruby

Hora da prática

Como ele fornece uma API Rest, com isso recebe requisição HTTP, utilizando os quatros verbos GET, POST, PUT e DELETE

1| endereco_da_api:porta/indice/tipo_do_documento
2| example- http://localhost:9200/futebol/jogador
Enter fullscreen mode Exit fullscreen mode

Uma requisição POST para uri

Realiza a indexação de um documento cujos dados devem ser passados como um objeto JSON no corpo da requisição, exemplo:

POST http://localhost:9200/futebol/jogador
{
    "nome": "Édson Arantes do Nascimento",
    "apelido": "Pelé",
    "titulos_mundiais": [
        "1958",
        "1962",
        "1970"
    ]
}
Enter fullscreen mode Exit fullscreen mode

Uma requisição GET para uri/_search

Retorna todos os documentos do índice indicado, exemplo:

GET http://localhost:9200/futebol/jogador/_search
{
    "query": {
        "match": {
            "apelido": {
            "query": "Pelé"
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Uma requisição PUT para uri/_id

_id deve ser o valor do código de identificação do documento. Caso o _id seja de um documento existente, substitui os campos do documento pelo corpo JSON da requisição.

Uma requisição DELETE para uri/_id

_id deve ser o valor do código de identificação do documento. Caso o _id seja de um documento existente, deleta fisicamente o documento do índice em que ele está indexado.

Conclusão

Então, como podemos ver o Elastic search é muito bom, ele é um assunto bem interessante, a forma de uso, as funcionalidades, performance que ele possui, pode te ajudar em diversas situações que esteja passando. Gostaria de ter o conhecido antes, recomendo muito ele.

TODO

  • O ElasticSearch seria útil para você?
  • Já passou por problemas de volume de dados grandes?
  • Conhece outra ferramenta melhor que essa?
  • Aplicam esta ferramenta no seu trabalho? Porquê?

Respondam às perguntas nos comentários.

Este foi o diário de bordo #16. Hoje eu escolhi falar sobre o Elasticsearch na próxima semana irei trazer sobre Redis galera, vlw. Vamos nos despedindo por aqui. Voltaremos com mais um diário de bordo.

Este artigo foi útil para você?
Deixe um comentário abaixo.

Referências

Latest comments (0)