Elasticsearch: solução para pesquisar em grandes volumes de dados
O Elasticsearch é um motor distribuído moderno, baseado no Apache Lucene, para pesquisa e análise eficiente de grandes quantidades de dados.
Ao longo dos últimos anos têm aparecido um conjunto de ferramentas bastante interessantes que se adaptam aos "novos" modelos de desenvolvimento de software e construção de plataformas.
Com o constante aumento de informação digital, o tão falado Big Data, é necessário possuir também ferramentas capazes de pesquisar e analisar rapidamente esses dados e apresentar quase de forma instantânea resultados. Uma dessas ferramentas chama-se Elasticsearch! Vamos conhecer melhor esta ferramenta.
Elasticsearch: é possível combinar vários tipos de pesquisas
O Elasticsearch é amplamente utilizado para armazenamento, pesquisa e análise de grandes volumes de dados de forma rápida e em tempo real. Esta solução é altamente escalável e permite que o utilizador combine vários tipos de pesquisas, sendo que os dados também podem ser de vários tipos (ex. dados estruturados, não estruturados, geo, métricas, etc).
Características interessantes do Elasticsearch
- Disponibilização de resultados em tempo real
- Pode ser configurado de forma distribuída
- Disponibilização de uma API RESTFul
- Orientado a "documentos", uma vez que os dados são armazenados em forma de "documentos" (no formato JSON)
Conceitos básicos do Elasticsearch
Quem usa o Elasticsearch tem de conhecer alguns conceitos básicos desta ferramenta para perceber como tudo funciona.
Cluster
Um cluster é uma coleção de um ou mais nós (máquinas) que juntos mantêm os dados consistentes e fornecem recursos de indexação e pesquisa.Um cluster é identificado por um nome exclusivo que, por padrão, é "elasticsearch". Esse nome é importante porque um nó só pode fazer parte de um cluster.
Node (Nó)
Um nó é um servidor que faz parte do cluster, armazena os dados e participa no processo de indexação e pesquisa do cluster. Tal como um cluster, um nó é identificado por um nome. Por padrão o nome é um Universally Unique IDentifier (UUID) aleatório atribuído no arranque do nó, mas o utilizador pode alterar o nome de um nó.
Índices, Tipos, documentos
Fazendo uma analogia ao que existe numa base de dados podemos referir que os índices<são as bases de dados (conjunto de documentos com características semelhantes). Por exemplo, podemos um índice para os dados dos clientes, outro índice para o catálogo de produtos e outro índice, por exemplo, para encomendas. Um índice é definido por um nome.
Os Tipos são como as tabelas. Os documentos são os registos, ou seja, a informação que pode ser indexada. Podemos ter um documento para um cliente, para um produto, ou para uma encomenda. Os campos são as colunas das tabelas.
O Elasticsearch tem ainda suporte para um conjunto vasto de linguagens de programação.
O Elasticsearch é utilizado por empresas como, por exemplo, a Google, GitHub, Twitter, SoundCloud, Yelp e Foursquare. Num próximo artigo iremos ensinar a instalar esta poderosa plataforma.
Iep, é usado no ATOM (Access TO Memory) da instituição onde estou.
Que nostalgia, lá vai o tempo que implementei stacks ELK para alguma empresas.