O documento discute o Elasticsearch, descrevendo-o como um mecanismo de busca e análise de dados distribuído baseado no Apache Lucene. Explica alguns conceitos-chave como clusters, nós, índices, tipos e documentos. Também aborda casos comuns de uso do Elasticsearch e técnicas avançadas de consulta como fuzzy, pinned e more like this.
3. • É um mecanismo de busca e análise de dados distribuído;
• Desenvolvido sobre o Apache Lucene;
• Lançado em 2010 pela Elasticsearch N.V. (atualmente Elastic);
• Possui um conjunto de REST APIs;
• Integrante da ELK Stack.
Elasticsearch?
4. Valorização do log
Ciclo de um desenvolvedor
1 2 3 4 5
Extração do
log do
container ou
da máquina
virtual
Armazena
o log da
response
no banco
de dados
Armazena o
log da
response e
da request
no banco de
dados
Cria um
banco de
dados NoSQL
para logs
Armazena log
em um
mecanismo
inteligente -
Elasticsearch
7. 1
Cluster
Grupo de nós
(servidores) que
guardam dados.
3
Index
Agrupamento de
documentos.
Análogo ao conceito
de base de dados
em SQL.
2
Node
Servidor individual de
armazenamento de
dados.
Participa de um cluster.
8. 4
Shards
Subgrupo de
documentos de um
index.
Um index pode ter
vários shards.
6
Document
Objeto JSON com
dados. Unidade de
informação a ser
indexada.
5
Type
Definição de um
Schema de um Index.
Análogo ao conceito de
tabela em SQL.
20. • Consultas de texto que exijam alta velocidade;
• Relevância de resultados;
• Observabilidade;
• Geolocalização;
• O conjunto da obra;
• Gerenciamento de logs.
• Entre outros.
Cenários comuns de uso
Apresentação
Elastic Contributor 2021
AWS Community Builder
Lembrar de expandir o apresentador
Aberto para todos os tipos de dados, incluindo textuais, numéricos, estruturados e não estruturados – orientado a documentos;
O Apache Lucene é uma biblioteca de software de mecanismo de pesquisa gratuita e de código aberto – construído em Java;
Possui um suporte para entrada, processamento e saída de dados;
Elasticsearch é o componente central do Elastic Stack, um conjunto de ferramentas gratuitas e abertas para ingestão, enriquecimento, armazenamento, análise e visualização de dados;
Altamente escalável;
Armazenamento e busca/análise de dados com altíssimo desempenho – quase que em tempo real;
Documentação muito completa;
Comunidade grande e ativa.
Cisco, Adobe, Docker, iFood, Udemy, SoundCloud, etc.
Empresas destaques nos seus respectivos ramos e de áreas distintas utilizam a ferramenta, o que mostra sua flexibilidade e adaptabilidade ao negócio.
Shards é análogo a partição em SQL;
Conceitos semelhantes aos do MongoDB para quem está familiarizado.
Justamente, por conta dessa arquitetura, o Elasticsearch possui facilidade para escalar e crescer horizontalmente.
Para escalar, bastar adicionar mais um “Node” no seu cluster.
O Shard é uma instância de um índice de Lucene, basicamente um mecanismo de pesquisa que indexa e manipula consultas para um subconjunto dos dados no cluster do Elasticsearch.
À medida que os dados são gravados em um shard, eles são publicados em novos segmentos Lucene, e é nessa hora que ficam disponíveis para consultas.
O Elasticsearch possui flexibilidade no gerenciamento de IDs, caso não seja informado, ele gera automaticamente.
Quando um documento é armazenado, ele é indexado e totalmente pesquisável quase em tempo real - em 1 segundo.
O Elasticsearch usa uma estrutura de dados chamada índice invertido que oferece suporte a pesquisas de texto completo muito rápidas.
Um índice invertido lista cada palavra única que aparece em qualquer documento e identifica todos os documentos em que cada palavra ocorre.
Ao invés de armazenar apenas um id e colunas de valor, como um banco de dados relacional tradicional, o Elastic armazena “termos” (palavras), sua quantidade de repetições e documentos onde ocorrem;
Desta forma, em uma busca por texto específico, ao invés de realizar um fullscan em talvez milhões de registros, ele pode localizar diretamente apenas os registros onde as palavras filtradas de fato ocorrem;
Priorização por repetição de acordo com os termos pesquisados;
É possível indexar por região;
Normalização de termos repetitivos maiúsculo e minúsculo, singular e plural – tudo depende de como você configura e impacta na forma de como as suas queries irão obter o resultado.
O conjunto da obra – ELK, REST APIs e funcionalidades prontas como agregação de informações, vocês quis dizer, e etc;
A query do tipo Fuzzy presente no Elasticsearch pode ser bastante útil em determinadas ocasiões
Erros de digitação
Evita trazer resultados vazios
O Elasticsearch aplica o cálculo de Levenshtein de distância
O cálculo de Levenstein também é conhecido como cálculo de edição, foi pensando por um matemático russo
Essa formula basicamente calcula o número mínimo de inserções, remoções e substituições que devem ser realizadas para fazer com que uma cadeia de caracteres, nesse caso RICK, seja transformada em outra cadeia de caracteres
A pinned query pode ser utilizada no seu Elasticsearch para promover documentos selecionados para uma classificação mais elevada do que aqueles que correspondem a uma determinada consulta.
Música
Texto
Pode ser mais simples você tirar um documento de um banco relacional e inseri-lo no Elasticsearch do que fazer direto em um banco tradicional
300ms
A query more_like_this localiza documentos que são “semelhantes” a um determinado conjunto de documentos.
Para fazer isso, a query More Like This seleciona um conjunto de termos representativos desses documentos, faz uma consulta usando esses termos, executa a consulta e retorna os resultados
262 ms
Entretanto, a query acima parte do pressuposto que meu cliente digitou o que ele queria, legal
Mas e se ele já estiver olhando um produto? Como podemos sugerir alternativas para ele?
Ao invés de passarmos um termo no “Like” agora nos iremos passar o “id” de um documento e com base nos termos daquele documento é que a busca será efetuada
250ms
A distance feature query pode ser utilizada no Elasticsearch para relevância dos documentos mais próximos de uma data ou até de um ponto de localização
Isso pode ser facilmente aplicado para oferecer casas de alugueis próximas do seu ponto de localização ou pontos de lazer
Eventos que ocorreram próximos a data atual
A distance feature query pode ser utilizada no Elasticsearch para relevância dos documentos mais próximos de uma data ou até de um ponto de localização
Isso pode ser facilmente aplicado para oferecer casas de alugueis próximas do seu ponto de localização ou pontos de lazer
Eventos que ocorreram próximos a data atual