Para quem não conhece ou não teve contato, o Elasticsearch é um mecanismo de busca open source, desenvolvido em cima do Apache Lucene. Mas antes de falar sobre o Elastic, vamos conhecer um pouco do Apache Lucene.
Abaixo você tem um texto retirado do site oficial descrevendo ele:
Em resumo, ele é uma engine de pesquisa full-text, muito conhecida pela sua velocidade no momento da indexação, mas um ponto negativo que motivou o desenvolvimento do Elasticsearch foi a sua curva alta de aprendizado.
Em resumo, o Elastic abstrai a api do Lucene para fazermos pesquisas full-text, mas se engana quem pensa que ele é somente uma engine de pesquisa full-text. Abaixo, você tem uma lista contendo algumas de suas funcionalidades:
- Disponibiliza dados em tempo real
- Pode ser distribuído e configurado para apresentar alta disponibilidade
- É orientado a documentos
- Disponibiliza uma api RESTful
Para atender aos pontos acima, ele armazena os dados em forma de documentos e depois disponibiliza esses documentos no formato JSON.
Fazendo uma analogia aos bancos de dados relacionais, nós temos:
- Indexes: são os banco de dados
- Tipos: são as tabelas
- Documentos: registros do banco de dados
- Campos: colunas
Abaixo, você tem uma exemplo de um registro no Elasticsearch:
{ "email": "tadriano.net@gmail.com", "first_name": "Thiago", "last_name": "Adriano", "info": { "bio": "System Architect", "age": 33, "languages": [ "portugues", "ingles" ] }, "date": "2018/05/27" }
O Elasticsearch utiliza uma técnica chamada Index invertido. Essa técnica permite que os usuários pesquisem por palavras-chave e localizem os documentos que correspondem a uma determinada consulta.
Existe também o conceito de node (também conhecido como nó), que é uma instância do Elastic em execução. O Elastic também permite a criação de um cluster. Para quem não conhece, um cluster é um grupo de nós com o mesmo cluster.name, eles trabalham juntos e compartilham dados para prover escalabilidade e alta disponibilidade.
Bom, meu intuito aqui foi somente fazer uma introdução ao Elasticsearch. No próximo artigo eu irei demonstrar como instalar ele em um container docker e consumir os seus dados com Node.js.
Espero que tenham gostado, e até a próxima, pessoal!