SlideShare une entreprise Scribd logo
1  sur  54
1
Descomplicando 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
Consulta por ID
Consulta por ID
Consulta por ID
Consulta por ID
Consulta por parâmetro
Parâmetro
Valor
Consulta por parâmetro
Consulta em todos os índices
Consulta em todos os índices
Match query
Match query
Match query com operator
Match com operator
Minimum should match
Minimum should match
Multi-Match Query
Multi-Match Query
Match Phrase
Match Phrase
Slop Parameter
Slop Parameter
Term Query
Term Query
Range Queries
Range Queries
Wildcard Parameter
Wildcard Parameter
Regexp
Regexp
Funny Queries
Funny Queries
Combinando operações
Combinando operações
Obrigado!

Contenu connexe

Similaire à Descomplicando Queries com Elasticsearch

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
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 
Python na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftPython na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftDenis Cavalcante
 
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
 
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
 
Aula03 - protocolo ldap
Aula03 -  protocolo ldapAula03 -  protocolo ldap
Aula03 - protocolo ldapCarlos Veiga
 
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
 
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
 
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
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureLuciano Condé
 

Similaire à Descomplicando Queries com Elasticsearch (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
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 
Python na nuvem: OpenStack Swift
Python na nuvem: OpenStack SwiftPython na nuvem: OpenStack Swift
Python na nuvem: OpenStack Swift
 
Elasticsearch 5.0
Elasticsearch 5.0Elasticsearch 5.0
Elasticsearch 5.0
 
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
 
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...
 
Otimização MySQL
Otimização MySQLOtimização MySQL
Otimização MySQL
 
LINQ
LINQLINQ
LINQ
 
Aula03 - protocolo ldap
Aula03 -  protocolo ldapAula03 -  protocolo ldap
Aula03 - protocolo ldap
 
Nosql
NosqlNosql
Nosql
 
Course Hibernate 2008
Course Hibernate 2008Course Hibernate 2008
Course Hibernate 2008
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
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
 
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
 
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
 
Azure Data Overview
Azure Data OverviewAzure Data Overview
Azure Data Overview
 
Desenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL AzureDesenvolvendo para o Windows Azure e SQL Azure
Desenvolvendo para o Windows Azure e SQL Azure
 

Plus 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
 
Avançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala ElasticAvançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala ElasticRoberto 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
 

Plus 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
 
Avançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala ElasticAvançando em Queries no Elasticsearch - TDC Sala Elastic
Avançando em Queries no Elasticsearch - TDC Sala Elastic
 
DockerConBR 2021
DockerConBR 2021DockerConBR 2021
DockerConBR 2021
 
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
 

Descomplicando Queries com Elasticsearch

Notes de l'éditeur

  1. 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.
  2. 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.
  3. Shards é análogo a partição em SQL; Conceitos semelhantes aos do MongoDB para quem está familiarizado.
  4. 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.
  5. O Elasticsearch possui flexibilidade no gerenciamento de IDs, caso não seja informado, ele gera automaticamente.
  6. 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.
  7. 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.
  8. O conjunto da obra – ELK, REST APIs e funcionalidades prontas como agregação de informações, vocês quis dizer, e etc;
  9. O Elasticsearch possui flexibilidade no gerenciamento de IDs, caso não seja informado, ele gera automaticamente.
  10. A consulta de “Match” é uma das consultas mais básicas e comumente usadas no Elasticsearch e funciona como uma consulta de texto completo. Podemos usar esta consulta para pesquisar texto, números ou valores booleanos; Isso retorna o mesmo documento de antes porque, por padrão, o Elasticsearch trata cada palavra na consulta de pesquisa com um operador OR.
  11. O conjunto da obra – ELK, REST APIs e funcionalidades prontas como agregação de informações, vocês quis dizer, e etc;