elasticsearch de dentro para fora
Post on 09-Apr-2017
280 views
Embed Size (px)
TRANSCRIPT
Elasticsearch de dentro para fora
OPA!Sou o Waldemar NetoEngenheiro de software
http://walde.co
2
http://walde.cohttp://walde.co
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
Avio x
5
1. Score1.1. Bicicleta 31.2. Waldemar 21.3. Avio 1
Overview do ecossistema6
CLUSTER
NODE
SHARD REPLICA
Lucene7
Como o Lucene v os documentos
O Lucene no separa tipos nem objetos. O Lucene apenas chave e valor. Como os objetos so salvos
produto.nome = "test"
8
o campo _source
O campo source compactado e jogado no disco.
9
o campo _all
O campo _all e fuso de todos os campos do documento em um s.
10
Filter - Term level Query
11
O que so filtros?
Filtros so a melhor forma para trabalhar com "valores exatos" pois eles acessam diretamente o nvel do Lucene(term level).
12
Quando usar filtros?
Termos booleanos Termos que no mudam Termos que determinam regras Ranges
13
Caching
14
O que cache?
Resultados guardados em memria, desta maneira o shard no precisa calcular as resultados novamente nem fazer o calculo de relevncia.
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 no calculam relevncia e no passam por anlise, dessa maneira eles podem ser cacheados pois na maioria das vezes eles devolvem o mesmo resultado.
18
Filtros que no so cacheados
Alguns filtros no so cacheados por padro pois so usados para buscas que mudam a cada chamada como por exemplo AND, OR e RANGE.
19
Query
20
O que so Queries?
Queries determinam como a busca deve se comportar e garantem que o contedo buscado vai ser procurado e comparado da maneira certa.
Elas conseguem calcular o quo relevante aquele resultado para a busca que foi feita.
21
Quando usar Queries?
Quando relevncia importante Quando necessrio mudar as regras do termo como
linguagens e sinnimos 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
score26
Score
Score relacionado a relevncia do resultado de uma busca para com o que foi buscado. So usados dois padres para determinar relevncia em uma Query que so 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 prprios resultados limitados Todos os resultados so 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 nmeros de documentos. Uma busca por scroll permite que faamos uma busca inicial e continuemos
buscando at que no tenha mais resultados. Mais ou menos como um cursor em bancos de dados tradicionais
Depois da busca inicial ser feita as prximas no iro pegar atualizaes 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 parmetro 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 no passam por analyzers. Por padro no geram relevncia, 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 expresses regulares como * [0-9]
38
NGRAMS
Buscas baseadas em digitao so incrementais exemplo: waldemar = w wa wal wald walde waldem waldema
waldemar S podem ser buscadas coisas que esto indexadas
Por que no indexar pedaos de terms?
39
Exemplo de Edge Ngram
waldemar
40
wa
waldwaldem
waldemar
E na produo?Artigo publicado no iMasters sobre boas prticas
41
http://imasters.com.br/desenvolvimento/elasticsearch-na-producao/?trace=1519021197&source=author-archive
E ERAS ISSO!PERGUNTAS?
HTTP://WALDE.CO/42