Back-End

16 jul, 2018

Introdução ao Elasticsearch

Publicidade

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!