SlideShare uma empresa Scribd logo
1 de 47
1
Avançando em queries
no Elasticsearch
Roberto Alves
Lead Software Engineer @ Altran
5
O que exatamente
é o Elasticsearch?
• É 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?
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
Use cases
Conceitos no
Elasticsearch
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.
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.
Verbo
DocID
Index
Type Document
Verbo
DocID
Index
Type Document
O segredo da performance
● Text blob + indexes
● Index invertido
Index invertido
5
Quando utilizar o
Elasticsearch?
• 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
Avançando
em queries
Fuzzy
Fuzzy
Fuzzy
Fuzzy
Fuzzy
Fuzzy
Fuzzy
Fuzzy
Fuzzy
Pinned
Pinned
Pinned
Pinned
Pinned
mtermvectors
mtermvectors
More Like This
More Like This
More Like This
More Like This
Distance Feature Query
Distance Feature Query
Distance Feature Query
Distance Feature Query
Obrigado!

Mais conteúdo relacionado

Semelhante a Avançando em Queries no Elasticsearch - TDC Sala Elastic

TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...tdc-globalcode
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Thiago Barradas
 
Apresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em FlorianopolisApresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em Florianopolisluis antonio Nunes
 
Python na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftPython na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftDenis Cavalcante
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 
Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...
Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...
Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...André Ricardo Barreto de Oliveira
 
AWS Meetup - Processando dados em alta escala com Node.js e AWS Lambda
AWS Meetup - Processando dados em alta escala com Node.js e AWS LambdaAWS Meetup - Processando dados em alta escala com Node.js e AWS Lambda
AWS Meetup - Processando dados em alta escala com Node.js e AWS LambdaDaniel Baptista Dias
 
Aula03 - protocolo ldap
Aula03 -  protocolo ldapAula03 -  protocolo ldap
Aula03 - protocolo ldapCarlos Veiga
 
TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...
TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...
TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...tdc-globalcode
 
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
TDC - Processamento de dados em alta escala com Node.js e AWS LambdaTDC - Processamento de dados em alta escala com Node.js e AWS Lambda
TDC - Processamento de dados em alta escala com Node.js e AWS LambdaDaniel Baptista Dias
 
Gerenciando recursos com Visual Studio e Azure Resource Manager
Gerenciando recursos com Visual Studio e Azure Resource ManagerGerenciando recursos com Visual Studio e Azure Resource Manager
Gerenciando recursos com Visual Studio e Azure Resource ManagerNicolas Takashi
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J Daniel San Martin
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosRodrigo Almeida
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webRafael Nunes
 

Semelhante a Avançando em Queries no Elasticsearch - TDC Sala Elastic (20)

TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
 
Apresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em FlorianopolisApresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em Florianopolis
 
Python na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftPython na nuvem: OpenStack Swift
Python na nuvem: OpenStack Swift
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 
Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...
Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...
Search: Explorando Todo O Poder das Buscas - Liferay Symposium Brasil 2015, S...
 
AWS Meetup - Processando dados em alta escala com Node.js e AWS Lambda
AWS Meetup - Processando dados em alta escala com Node.js e AWS LambdaAWS Meetup - Processando dados em alta escala com Node.js e AWS Lambda
AWS Meetup - Processando dados em alta escala com Node.js e AWS Lambda
 
Otimização MySQL
Otimização MySQLOtimização MySQL
Otimização MySQL
 
Aula03 - protocolo ldap
Aula03 -  protocolo ldapAula03 -  protocolo ldap
Aula03 - protocolo ldap
 
Course Hibernate 2008
Course Hibernate 2008Course Hibernate 2008
Course Hibernate 2008
 
LINQ
LINQLINQ
LINQ
 
Nosql
NosqlNosql
Nosql
 
TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...
TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...
TDC2017 | São Paulo - Trilha NODEJS How we figured out we had a SRE team at -...
 
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
TDC - Processamento de dados em alta escala com Node.js e AWS LambdaTDC - Processamento de dados em alta escala com Node.js e AWS Lambda
TDC - Processamento de dados em alta escala com Node.js e AWS Lambda
 
Gerenciando recursos com Visual Studio e Azure Resource Manager
Gerenciando recursos com Visual Studio e Azure Resource ManagerGerenciando recursos com Visual Studio e Azure Resource Manager
Gerenciando recursos com Visual Studio e Azure Resource Manager
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dados
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações web
 

Mais de Roberto Alves

Descomplicando Service Mesh
Descomplicando Service MeshDescomplicando Service Mesh
Descomplicando Service MeshRoberto Alves
 
LGPD aplicada na área da Saúde - TDC Transformation 2021
LGPD aplicada na área da Saúde - TDC Transformation 2021LGPD aplicada na área da Saúde - TDC Transformation 2021
LGPD aplicada na área da Saúde - TDC Transformation 2021Roberto Alves
 
Descomplicando Queries com Elasticsearch
Descomplicando Queries com ElasticsearchDescomplicando Queries com Elasticsearch
Descomplicando Queries com ElasticsearchRoberto Alves
 
Blue/Green Deployment Pattern - DevOpsDays 2020
Blue/Green Deployment Pattern - DevOpsDays 2020Blue/Green Deployment Pattern - DevOpsDays 2020
Blue/Green Deployment Pattern - DevOpsDays 2020Roberto Alves
 
Teste de carga com Node.js - Americana Tech Conf 2020
Teste de carga com Node.js - Americana Tech Conf 2020Teste de carga com Node.js - Americana Tech Conf 2020
Teste de carga com Node.js - Americana Tech Conf 2020Roberto Alves
 
Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...
Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...
Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...Roberto Alves
 
LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020Roberto Alves
 
Node.js Streams - TDC SP
Node.js Streams - TDC SPNode.js Streams - TDC SP
Node.js Streams - TDC SPRoberto Alves
 
Explorando o mundo serverless
Explorando o mundo serverlessExplorando o mundo serverless
Explorando o mundo serverlessRoberto Alves
 

Mais de Roberto Alves (11)

Descomplicando Service Mesh
Descomplicando Service MeshDescomplicando Service Mesh
Descomplicando Service Mesh
 
LGPD aplicada na área da Saúde - TDC Transformation 2021
LGPD aplicada na área da Saúde - TDC Transformation 2021LGPD aplicada na área da Saúde - TDC Transformation 2021
LGPD aplicada na área da Saúde - TDC Transformation 2021
 
DockerConBR 2021
DockerConBR 2021DockerConBR 2021
DockerConBR 2021
 
Descomplicando Queries com Elasticsearch
Descomplicando Queries com ElasticsearchDescomplicando Queries com Elasticsearch
Descomplicando Queries com Elasticsearch
 
Blue/Green Deployment Pattern - DevOpsDays 2020
Blue/Green Deployment Pattern - DevOpsDays 2020Blue/Green Deployment Pattern - DevOpsDays 2020
Blue/Green Deployment Pattern - DevOpsDays 2020
 
Teste de carga com Node.js - Americana Tech Conf 2020
Teste de carga com Node.js - Americana Tech Conf 2020Teste de carga com Node.js - Americana Tech Conf 2020
Teste de carga com Node.js - Americana Tech Conf 2020
 
Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...
Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...
Como o Einstein se preparou para sustentar o aumento exponencial de uso da Te...
 
Serverless week
Serverless weekServerless week
Serverless week
 
LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020
 
Node.js Streams - TDC SP
Node.js Streams - TDC SPNode.js Streams - TDC SP
Node.js Streams - TDC SP
 
Explorando o mundo serverless
Explorando o mundo serverlessExplorando o mundo serverless
Explorando o mundo serverless
 

Avançando em Queries no Elasticsearch - TDC Sala Elastic

Notas do Editor

  1. Apresentação Elastic Contributor 2021 AWS Community Builder Lembrar de expandir o apresentador
  2. 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.
  3. 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.
  4. Shards é análogo a partição em SQL; Conceitos semelhantes aos do MongoDB para quem está familiarizado.
  5. 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.
  6. O Elasticsearch possui flexibilidade no gerenciamento de IDs, caso não seja informado, ele gera automaticamente.
  7. 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.
  8. 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.
  9. O conjunto da obra – ELK, REST APIs e funcionalidades prontas como agregação de informações, vocês quis dizer, e etc;
  10. https://github.com/robertosousa1/tdc-talk-advancing-in-elasticsearch-queries
  11. A query do tipo Fuzzy presente no Elasticsearch pode ser bastante útil em determinadas ocasiões Erros de digitação Evita trazer resultados vazios
  12. 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
  13. 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.
  14. 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
  15. 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
  16. 262 ms
  17. 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
  18. 250ms
  19. 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
  20. 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
  21. https://github.com/robertosousa1/tdc-talk-advancing-in-elasticsearch-queries https://www.linkedin.com/in/robertosousa01/