Desenvolvimento de sistemas

Elasticsearch: alto nível de eficiência na análise e processamento de informações

O Elasticsearch permite a busca em dados estruturados e em grande quantidade de dados com grande rapidez, além de disponibilizar, automaticamente, a replicação dos dados armazenados. Com isso é possível adquirir um alto nível de eficiência na análise e processamento de informações.

O QUE É ELASTICSEARCH?

Este produto da Elastic nos permite realizar buscas e análises de dados distribuídos e é um projeto aberto e gratuito, desde que usado sob a licença SSPL ou sob a licença da Elastic.

O ElasticSearch é o principal produto da Elastic Stack, ou ELK Stack. Essa Stack é o conjunto de ferramentas disponíveis pela Elastic para a análise de dados. Com elas podemos realizar a análise de dados, armazenamento, visualização, ingestão, busca, dentre outras funcionalidades. Dentro da Elastic Stack temos o ElasticSearch, o Logstash, o Kibana e o Beats. Cada um tem a sua funcionalidade e importância dentro da Elastic Stack porém estão sempre vinculados ao uso com o ElasticSearch.

COMO É A ESTRUTURA E O FUNCIONAMENTO DO ELASTICSEARCH?

Usando o ElasticSearch podemos realizar buscas completas em dados estruturados e em grande quantidade de dados, realizar análise de logs da aplicação, métricas do sistema, também pode ser usado para machine learning para realizar predição de dados e para detecção de anomalias nos dados. Mas grande parte dos desenvolvedores que vem até o ElasticSearch, precisam muitas vezes realizar buscas  em dados estruturados ou em grande quantidade de dados.

O ElasticSearch trabalha com documentos, cada documento armazena uma informação como se fosse uma linha de uma tabela em um banco relacional. Esses documentos são armazenados nos nodes porém são agrupados em índices (os índices podem ser considerados como as tabelas dos bancos relacionais)

É possível trabalhar com quantos nodes forem necessários ou com quantos quiser, tudo depende da capacidade de armazenamento e disponibilidade de cada node.

Os índices podem ser divididos em shards, os shards são como uma divisão do índice, seria como você ter um índice de 1 terabyte e dividir em dois shards, cada shard vai armazenar 500 gigabytes daquele índice. Por default os índices vêm configurados para ter um único shard, e esse número pode ser incrementado conforme a necessidade. Fatores que podem influenciar na escolha do número de shards é o número de nodes e a capacidade de cada um, o número de queries que o ElasticSearch vai receber, o tamanho do índice, entre outros.

O ElasticSearch também permite realizar a replicação dos dados e ela já vem ativada por default, não sendo necessário nenhuma configuração para já sair usando essa funcionalidade. A replicação é feita a nível dos index e é feita utilizando os shards. Para que seja possível utilizar a replicação de dados é necessário que o cluster tenha dois nodes configurados, assim o ElasticSearch automaticamente cria um réplica de um índice que esteja armazenado no node A no node B, é possível ter quantos shards de réplicas quiser e o ElasticSearch automaticamente “espalha” eles pelos nodes disponíveis, nunca deixando um shard de réplica no mesmo node que o shard principal, assim sempre que um node não estiver disponível é garantido que terá outro node com um shard daquele index disponível.

Configurados os nodes e os index, podemos realizar as consultas no ElasticSearch. o Elastic disponibiliza toda uma API para realizar inserção de índices, update, deleção e é claro as buscas.

Quando armazenamos um índice, é importante definir o tipo de dado contido naquele índice, dados do tipo text  são “quebrados” em várias palavras e na hora da busca são analisadas uma a uma, enquanto que dados do tipo keyword são armazenados com uma única palavra. Um campo do tipo text o Tokenizer vai quebrar em várias palavras e assim se você armazenar o nome como “Leonardo de Oliveira Souza” e buscar apenas por “Leonardo Souza” o ElasticSearch vai retornar o “Leonardo de Oliveira Souza”, porém se armazenar como um campo keyword ele não retornará porque o nome não será quebrado em tokens.

E aí, tem alguma dúvida sobre Elasticsearch? Conta para a gente nos comentários!

Você pode conferir este conteúdo em vídeo no Manual do Dev com o Leo Souza:

CONHEÇA O CRIADOR DESTE CONTEÚDO

Leonardo de Oliveira SouzaOlá galera! Meu nome é Leonardo, tenho 24 anos e sou formado em Engenharia de Computação pela Universidade Estadual de Ponta Grossa. Sou nascido e criado na zona rural do município de Sengés, mas mesmo estando longe dos grandes centros sempre fui apaixonado pela tecnologia e por tudo o que ela pode fazer por nós, seja otimizar processos, melhorar a qualidade de vida ou proporcionar novas experiências que sem ela seria impossível ou muito difícil. Trabalho com desenvolvimento web a cerca de 5 anos, e hoje, atuo como desenvolvedor full-stack na Firework.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *