SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Elasticsearch
de dentro para fora
OPA!
Sou o Waldemar Neto
Engenheiro de software
http://walde.co
2
3
‘’
“Elasticsearch is a search server based
on Lucene. It provides a distributed,
multitenant-capable full-text search
engine with a RESTful web interface
and schema-free JSON documents.
Elasticsearch is developed in Java and
is released as open source under the
terms of the Apache License.”
Banon. Shay
4
Índice invertido
Term Doc_1 Doc_2 Doc_3
Waldemar x x
Bicicleta x x x
Avião x
5
1. Score
1.1. Bicicleta 3
1.2. Waldemar 2
1.3. Avião 1
Overview do ecossistema6
CLUSTER
NODE
SHARD REPLICA
Lucene
7
Como o Lucene vê os documentos
● O Lucene não separa tipos nem objetos.
● O Lucene é apenas chave e valor.
● Como os objetos são salvos
○ produto.nome = "test"
8
o campo _source
O campo source é compactado e jogado no disco.
9
o campo _all
O campo _all e fusão de todos os campos do documento em
um só.
10
Filter - Term level Query
11
O que são filtros?
Filtros são a melhor forma para trabalhar com "valores
exatos" pois eles acessam diretamente o nível do Lucene
(term level).
12
Quando usar filtros?
● Termos booleanos
● Termos que não mudam
● Termos que determinam regras
● Ranges
13
Caching
14
O que é cache?
Resultados guardados em memória, desta maneira o shard
não precisa calcular as resultados novamente nem fazer o
calculo de relevância.
15
TIPOS DE CACHE
● Shard-Level cache >= 1.4
● Filter Cache
16
Shard Level cache
Quando uma busca é executada dentro de um index, cada
shard executa sua busca localmente e calcula seu
resultado. Esse resultado é mesclado com o resultado
global no coordinating node.
17
Filter Caching
Filtros não calculam relevância e não passam por análise,
dessa maneira eles podem ser cacheados pois na maioria das
vezes eles devolvem o mesmo resultado.
18
Filtros que não são cacheados
Alguns filtros não são cacheados por padrão pois são
usados para buscas que mudam a cada chamada como
por exemplo AND, OR e RANGE.
19
Query
20
O que são Queries?
● Queries determinam como a busca deve se comportar e
garantem que o conteúdo buscado vai ser procurado e
comparado da maneira certa.
● Elas conseguem calcular o quão relevante aquele
resultado é para a busca que foi feita.
21
Quando usar Queries?
● Quando relevância é importante
● Quando é necessário mudar as regras do termo como
linguagens e sinônimos
● Quando o full text search é importante
● Quando analisar os termos é importante
22
Query vs Filter
23
Exemplo de Query e Filter juntos24
Ordem de prioridade25
score
26
Score
Score é relacionado a relevância do resultado de uma busca
para com o que foi buscado. São usados dois padrões para
determinar relevância em uma Query que são TF e IDF.
27
TF - Term Frequency
_search?name=test
{
"_id": 1,
"name": "this name is a test or not a test"
}
2
28
IDF - Inverse Document Frequency
_search?name=test
{
"_id": 1,
"name": "this name is a test or not a test"
}, {
"_id": 2,
"name": "this name is a test"
}
2
1
29
Field Lenght Norm
_search?name=test
{
"_id": 1,
"name": "this name is a test or not a test"
}, {
"_id": 2,
"name": "this name is a test"
}
30
Analyzers tem impacto?
31
Pagination é bom?
32
O PROBLEMA DO SIZE/FROM
● Cada shard calcula seu size
● Cada shard gera seus próprios resultados limitados
● Todos os resultados são mesclados no coordinator node
● O shard precisa percorrer os dados
○ Imagine que queremos os resultados de 1010 até
1020
■ Cada shard vai produzir 1020 resultados
○ O cordinator node vai receber 5100 resultados caso
tenha 5 shards
■ Vai remover 5090 resultados para produzir
apenas 10.
33
QUE TAL SCAN/SCROLL?
● A scroll api é usada pelo elastic para buscar grandes números de documentos.
○ Uma busca por scroll permite que façamos uma busca inicial e continuemos
buscando até que não tenha mais resultados.
■ Mais ou menos como um cursor em bancos de dados tradicionais
○ Depois da busca inicial ser feita as próximas não irão pegar atualizações de
documentos caso tenha neste intervalo.
● O scan permite que desativemos o sorting do elastic e apenas retorne os
proximos dados do scroll.
● Para usar basta fazer uma busca colocando o search_type como scan e passando
o parâmetro scroll dizendo quanto tempo esse scroll pode ficar aberto.
34
PREFIX vs REGEX vs NGRAM
35
Prefix Query
● Prefix queries rodam no term level ou seja não passam por analyzers.
● Por padrão não geram relevância, é mais como um filtro do que uma query.
36
Prefix query
PREFIX = EX;
UMA FRASE DE EXEMPLO
Retorna o ID
37
WILDCARD e REGEXP query
● Funcionam da mesma maneira que a Prefix Query
● Aceitam expressões regulares como * [0-9]
38
NGRAMS
● Buscas baseadas em digitação são incrementais
○ exemplo: waldemar = w wa wal wald walde waldem waldema
waldemar
● Só podem ser buscadas coisas que estão indexadas
○ Por que não indexar pedaços de terms?
39
Exemplo de Edge Ngram
waldemar
40
wa
wald
waldem
waldemar
E na produção?
Artigo publicado no iMasters sobre boas práticas
41
E ERAS ISSO!
PERGUNTAS?
HTTP://WALDE.CO/
42

Mais conteúdo relacionado

Destaque

Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix
Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix
Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix aristotelesaraujo
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaWaldemar Neto
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaAécio Pires
 
Zabbix - Alem da Infraestrutura - Parte 2
Zabbix - Alem da Infraestrutura - Parte 2Zabbix - Alem da Infraestrutura - Parte 2
Zabbix - Alem da Infraestrutura - Parte 2Luiz Sales
 
Zabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensourceZabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensourceFilipe Paternot
 
Zabbix meetup RJ: Infra, tuning e documentação
Zabbix meetup RJ: Infra, tuning e documentaçãoZabbix meetup RJ: Infra, tuning e documentação
Zabbix meetup RJ: Infra, tuning e documentaçãoFilipe Paternot
 
Gerenciamento de Redes com Zabbix
Gerenciamento de Redes com ZabbixGerenciamento de Redes com Zabbix
Gerenciamento de Redes com ZabbixAndré Déo
 
Monitoramento Opensource com Zabbix
Monitoramento Opensource com ZabbixMonitoramento Opensource com Zabbix
Monitoramento Opensource com ZabbixRenato Batista
 
Aula 008 - Gerenciamento e Desempenho de Redes: Halexsandro Sales
Aula 008 - Gerenciamento e Desempenho de Redes: Halexsandro SalesAula 008 - Gerenciamento e Desempenho de Redes: Halexsandro Sales
Aula 008 - Gerenciamento e Desempenho de Redes: Halexsandro SalesVerdanatech Soluções em TI
 
Zabbix: Apresentação meetup Fortaleza/CE (Brasil)
Zabbix: Apresentação meetup Fortaleza/CE (Brasil)Zabbix: Apresentação meetup Fortaleza/CE (Brasil)
Zabbix: Apresentação meetup Fortaleza/CE (Brasil)Werneck Costa
 
Workshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCSWorkshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCSLinux Solutions
 
FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0
FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0
FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0aristotelesaraujo
 
Monitoramento de ativos com zabbix
Monitoramento de ativos com zabbixMonitoramento de ativos com zabbix
Monitoramento de ativos com zabbixRafael Gomes
 
Zabbix API at FISL12 by Takanori Suzuki
Zabbix API at FISL12 by Takanori SuzukiZabbix API at FISL12 by Takanori Suzuki
Zabbix API at FISL12 by Takanori Suzukitakanori suzuki
 
Zabbix Smart problem detection - FISL 2015 workshop
Zabbix Smart problem detection - FISL 2015 workshopZabbix Smart problem detection - FISL 2015 workshop
Zabbix Smart problem detection - FISL 2015 workshopZabbix
 
Monitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHELMonitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHELAlessandro Silva
 
Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012André Déo
 

Destaque (20)

Palestra Zabbix no 12 Geinfo (2013)
Palestra Zabbix no 12 Geinfo (2013)Palestra Zabbix no 12 Geinfo (2013)
Palestra Zabbix no 12 Geinfo (2013)
 
Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix
Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix
Latinoware2013 - Implentando Plugin de Geolocalização no Zabbix
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramenta
 
Zabbix - Alem da Infraestrutura - Parte 2
Zabbix - Alem da Infraestrutura - Parte 2Zabbix - Alem da Infraestrutura - Parte 2
Zabbix - Alem da Infraestrutura - Parte 2
 
Zabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensourceZabbix meetup RJ: Integrações e opensource
Zabbix meetup RJ: Integrações e opensource
 
Zabbix meetup RJ: Infra, tuning e documentação
Zabbix meetup RJ: Infra, tuning e documentaçãoZabbix meetup RJ: Infra, tuning e documentação
Zabbix meetup RJ: Infra, tuning e documentação
 
Aula 009 de Gerenciamento de Redes - SNMP
Aula 009 de Gerenciamento de Redes - SNMPAula 009 de Gerenciamento de Redes - SNMP
Aula 009 de Gerenciamento de Redes - SNMP
 
Gerenciamento de Redes com Zabbix
Gerenciamento de Redes com ZabbixGerenciamento de Redes com Zabbix
Gerenciamento de Redes com Zabbix
 
Monitoramento Opensource com Zabbix
Monitoramento Opensource com ZabbixMonitoramento Opensource com Zabbix
Monitoramento Opensource com Zabbix
 
Aula 008 - Gerenciamento e Desempenho de Redes: Halexsandro Sales
Aula 008 - Gerenciamento e Desempenho de Redes: Halexsandro SalesAula 008 - Gerenciamento e Desempenho de Redes: Halexsandro Sales
Aula 008 - Gerenciamento e Desempenho de Redes: Halexsandro Sales
 
Zabbix: Apresentação meetup Fortaleza/CE (Brasil)
Zabbix: Apresentação meetup Fortaleza/CE (Brasil)Zabbix: Apresentação meetup Fortaleza/CE (Brasil)
Zabbix: Apresentação meetup Fortaleza/CE (Brasil)
 
Workshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCSWorkshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCS
 
FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0
FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0
FLISOL-Jaguaruana/CE - 2013 - Monitoramento com Software Livre - Zabbix 2.0
 
Monitoramento de ativos com zabbix
Monitoramento de ativos com zabbixMonitoramento de ativos com zabbix
Monitoramento de ativos com zabbix
 
Zabbix API at FISL12 by Takanori Suzuki
Zabbix API at FISL12 by Takanori SuzukiZabbix API at FISL12 by Takanori Suzuki
Zabbix API at FISL12 by Takanori Suzuki
 
Zabbix Smart problem detection - FISL 2015 workshop
Zabbix Smart problem detection - FISL 2015 workshopZabbix Smart problem detection - FISL 2015 workshop
Zabbix Smart problem detection - FISL 2015 workshop
 
Monitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHELMonitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHEL
 
ELK introduction
ELK introductionELK introduction
ELK introduction
 
Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012
 

Semelhante a Elasticsearch de dentro para fora

Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
Pesquisa do Sapo
Pesquisa do SapoPesquisa do Sapo
Pesquisa do Sapocodebits
 
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...tdc-globalcode
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
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
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time Umbler
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptMarcos Artigas
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchMichel Bottan
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
Elasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoElasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoBruna Alves
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...iMasters
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
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
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisJefferson Martins de Andrade
 
Symfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleSymfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleWaldemar Neto
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation FrameworkLeandro Domingues
 

Semelhante a Elasticsearch de dentro para fora (20)

Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
Pesquisa do Sapo
Pesquisa do SapoPesquisa do Sapo
Pesquisa do Sapo
 
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
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...
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.ppt
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted Search
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
Elasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoElasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produção
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Apresentação SIC 2016
Apresentação SIC 2016Apresentação SIC 2016
Apresentação SIC 2016
 
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
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | Florianópolis
 
Symfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleSymfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundle
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation Framework
 

Mais de Waldemar Neto

12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwordsWaldemar Neto
 
12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwordsWaldemar Neto
 
Construindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSConstruindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSWaldemar Neto
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesWaldemar Neto
 
Cakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteCakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteWaldemar Neto
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaWaldemar Neto
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawnsWaldemar Neto
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsulWaldemar Neto
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografiaWaldemar Neto
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open sourceWaldemar Neto
 

Mais de Waldemar Neto (11)

12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords
 
12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords
 
Construindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSConstruindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJS
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservices
 
Cakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteCakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita gente
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglota
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawns
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsul
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografia
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open source
 

Elasticsearch de dentro para fora

  • 2. OPA! Sou o Waldemar Neto Engenheiro de software http://walde.co 2
  • 3. 3
  • 4. ‘’ “Elasticsearch is a search server based on Lucene. It provides a distributed, multitenant-capable full-text search engine with a RESTful web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License.” Banon. Shay 4
  • 5. Índice invertido Term Doc_1 Doc_2 Doc_3 Waldemar x x Bicicleta x x x Avião x 5 1. Score 1.1. Bicicleta 3 1.2. Waldemar 2 1.3. Avião 1
  • 8. Como o Lucene vê os documentos ● O Lucene não separa tipos nem objetos. ● O Lucene é apenas chave e valor. ● Como os objetos são salvos ○ produto.nome = "test" 8
  • 9. o campo _source O campo source é compactado e jogado no disco. 9
  • 10. o campo _all O campo _all e fusão de todos os campos do documento em um só. 10
  • 11. Filter - Term level Query 11
  • 12. O que são filtros? Filtros são a melhor forma para trabalhar com "valores exatos" pois eles acessam diretamente o nível do Lucene (term level). 12
  • 13. Quando usar filtros? ● Termos booleanos ● Termos que não mudam ● Termos que determinam regras ● Ranges 13
  • 15. O que é cache? Resultados guardados em memória, desta maneira o shard não precisa calcular as resultados novamente nem fazer o calculo de relevância. 15
  • 16. TIPOS DE CACHE ● Shard-Level cache >= 1.4 ● Filter Cache 16
  • 17. Shard Level cache Quando uma busca é executada dentro de um index, cada shard executa sua busca localmente e calcula seu resultado. Esse resultado é mesclado com o resultado global no coordinating node. 17
  • 18. Filter Caching Filtros não calculam relevância e não passam por análise, dessa maneira eles podem ser cacheados pois na maioria das vezes eles devolvem o mesmo resultado. 18
  • 19. Filtros que não são cacheados Alguns filtros não são cacheados por padrão pois são usados para buscas que mudam a cada chamada como por exemplo AND, OR e RANGE. 19
  • 21. O que são Queries? ● Queries determinam como a busca deve se comportar e garantem que o conteúdo buscado vai ser procurado e comparado da maneira certa. ● Elas conseguem calcular o quão relevante aquele resultado é para a busca que foi feita. 21
  • 22. Quando usar Queries? ● Quando relevância é importante ● Quando é necessário mudar as regras do termo como linguagens e sinônimos ● Quando o full text search é importante ● Quando analisar os termos é importante 22
  • 24. Exemplo de Query e Filter juntos24
  • 27. Score Score é relacionado a relevância do resultado de uma busca para com o que foi buscado. São usados dois padrões para determinar relevância em uma Query que são TF e IDF. 27
  • 28. TF - Term Frequency _search?name=test { "_id": 1, "name": "this name is a test or not a test" } 2 28
  • 29. IDF - Inverse Document Frequency _search?name=test { "_id": 1, "name": "this name is a test or not a test" }, { "_id": 2, "name": "this name is a test" } 2 1 29
  • 30. Field Lenght Norm _search?name=test { "_id": 1, "name": "this name is a test or not a test" }, { "_id": 2, "name": "this name is a test" } 30
  • 33. O PROBLEMA DO SIZE/FROM ● Cada shard calcula seu size ● Cada shard gera seus próprios resultados limitados ● Todos os resultados são mesclados no coordinator node ● O shard precisa percorrer os dados ○ Imagine que queremos os resultados de 1010 até 1020 ■ Cada shard vai produzir 1020 resultados ○ O cordinator node vai receber 5100 resultados caso tenha 5 shards ■ Vai remover 5090 resultados para produzir apenas 10. 33
  • 34. QUE TAL SCAN/SCROLL? ● A scroll api é usada pelo elastic para buscar grandes números de documentos. ○ Uma busca por scroll permite que façamos uma busca inicial e continuemos buscando até que não tenha mais resultados. ■ Mais ou menos como um cursor em bancos de dados tradicionais ○ Depois da busca inicial ser feita as próximas não irão pegar atualizações de documentos caso tenha neste intervalo. ● O scan permite que desativemos o sorting do elastic e apenas retorne os proximos dados do scroll. ● Para usar basta fazer uma busca colocando o search_type como scan e passando o parâmetro scroll dizendo quanto tempo esse scroll pode ficar aberto. 34
  • 35. PREFIX vs REGEX vs NGRAM 35
  • 36. Prefix Query ● Prefix queries rodam no term level ou seja não passam por analyzers. ● Por padrão não geram relevância, é mais como um filtro do que uma query. 36
  • 37. Prefix query PREFIX = EX; UMA FRASE DE EXEMPLO Retorna o ID 37
  • 38. WILDCARD e REGEXP query ● Funcionam da mesma maneira que a Prefix Query ● Aceitam expressões regulares como * [0-9] 38
  • 39. NGRAMS ● Buscas baseadas em digitação são incrementais ○ exemplo: waldemar = w wa wal wald walde waldem waldema waldemar ● Só podem ser buscadas coisas que estão indexadas ○ Por que não indexar pedaços de terms? 39
  • 40. Exemplo de Edge Ngram waldemar 40 wa wald waldem waldemar
  • 41. E na produção? Artigo publicado no iMasters sobre boas práticas 41