Dev (Back & Front)ARTIGO

Introdução ao Elasticsearch

No seguinte artigo, o autor apresenta uma uma introdução ao Elasticsearch e explica quais são os conceitos principais deste servidor de buscas baseado no Apache Lucene.

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:

Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

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!

Microsoft (MVP), atualmente trabalha como Arquiteto de Software para TV Bandeirantes. Nesses últimos anos, focou nas tecnologias criadas pela Microsoft, mas sempre esteve antenado para as novas tecnologias que estão surgindo no mercado. Em um breve resumo, é uma pessoa apaixonada pelo que faz, tem a sua profissão como hobby.

Ver perfil