Elasticsearch de dentro para fora

  • View
    280

  • Download
    1

Embed Size (px)

Text of Elasticsearch de dentro para fora

  • 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