Elastic MeetUp Porto Alegre

27
Substituindo navegação multi-etapa por busca Elastic MeetUp Porto Alegre 22 de Julho de 2016

Transcript of Elastic MeetUp Porto Alegre

Page 1: Elastic MeetUp Porto Alegre

Substituindo navegação multi-etapa por busca

Elastic MeetUp Porto Alegre22 de Julho de 2016

Page 2: Elastic MeetUp Porto Alegre

Missão: Melhorar a forma de obter a informação substituindo navegação multi-etapa por busca.

Líder no segmento de busca corporativa na América Latina desde 2008

Nossos profissionais são certificados e dedicados exclusivamente à busca corporativa

Desenvolvemos e integramos soluções para diversas verticais como Governo, E-commerce, Industrias e Varejo

Parceiro oficial Elastic no Brasil

Sobre a E-Storage

Page 3: Elastic MeetUp Porto Alegre

+ 60.000

Membros nacomunidade

+ 2.000

Clientes globais de subscrição

+ 50 milhões

Downloads

Sobre a Elastic

● Fundada em 2012 em Amsterdam na Holanda

● Escritórios em mais de 14 paises

● Oferece apoio técnico e treinamentos

Page 4: Elastic MeetUp Porto Alegre

Sobre mim

● Trabalho com ferramentas para busca corporativa desde 2008

● Utilizo/Conheço Elasticsearch desde a versão 0.9

● Me interesso por todas as possibilidades oferecidas pelo stack como análise de dados, busca de conteúdo, concorrência e performance

● Realizo treinamentos, provas de conceito e oriento a equipe de desenvolvedores da E-Storage

Page 5: Elastic MeetUp Porto Alegre

Agenda

● A evolução do Elastic Stack

● Atualizando

● Compatibilidade na versão 2.3

Page 6: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Page 7: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

CRUD, Mapping, Busca, Query DSL, Highlight, Aliases, Cluster / Nós / Estatísticas de índices, Busca facetada, Scripting, Index Templates, Dynamic Mapping, Parent/Child, Nested Objects, GET em tempo real, Versionamento, Roteamento, Percolator, Geo-points, Geo-shapes e sugestões

Page 8: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Aggregations, API CAT, Percolator distribuído, Doc Values, Snapshot/Restore, Tribe node, Circuit breakers, Templates de pesquisa, Sugestões para autocompletar, Lucene scripting, Top hits

Page 9: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Problemas com índices - Index CorruptionProblemas com memória - OOMProblemas com segurança - Security exploits

Aggregations, API CAT, Percolator distribuído, Doc Values, Snapshot/Restore, Tribe node, Circuit breakers, Templates de pesquisa, Sugestões para autocompletar, Lucene scripting, Top hits

Page 10: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Resiliência do Cluster, Checksums em todo o lugar, Lock down scripting, Tornar Doc Values mais rápido

Page 11: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Tornar rolling restarts mais fáceis: Synced flush, Delayed allocation, Cancellable allocation

Page 12: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Consertar todas as coisas!

Page 13: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Reformulação da estrutura de mapping:

Era: Agora:Extremamente Flexível ConfiávelPermitía erros silenciosos ConsistentePodia gerar erros em índices Possui uma fudação mais sólida

Aqui ocorre uma quebra de compatibilidade com as versões anteriores

Page 14: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

E mais…

● Reformulação nos Transaction Logs: Duráveis, Atomic writes e realiza Fsync a cada requisição

● Usabilidade: Query e filters juntos, cache automatico para consultas, Merge auto-throttling, Excessões estruturadas, salvaguardas para administradores

● Uso de memória: Doc Values mais rapido usando o cache do sistema de arquivos, field length norms e relevância utilizando a mesma estrutura de doc values, Parent/Child v2 (joins mais rápidos) , Geo-points v2 (50% do tamanho índice)

● Segurança: Checagem JarHell, uso do Java Security Manager, uso de previlégios mínimos, modularização do código, Java serialization não é mais utilizada

● Testes: Código completamente coberto por testes unitários, todos plugins suportados também são testados, realização de testes de integração reais

Page 15: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

E ganhamos novas funcionalidades…

● Pipeline aggregations: Análises de dados avançadas, pós-processamento do resultado das agregações

● Geo-centroid aggregations: Melhorias visuais no Kibana para visualizar pontos geospaciais

● Query Profiler: Agora é possível saber qual parte da query não esta tendo o desempenho esperado

● Reindex API, Update by Query, Task manager:

Pipeline Aggs - Visualização de anomalias

Mais facilidade para reindexar dados existentes e acompanhar ações em background ou com tempo de execução maiores.

Page 16: Elastic MeetUp Porto Alegre

A evolução do Elastic Stack

Agenda para novas versões

Versões de correção

● Versão corrente menor

● Ultima versão menor da última versão maior

● Correções de bugs e pequenas melhorias

Versões menores

● Frequentes

● Menores

● Sem quebras de compatibilidade, a não ser que sejam necessárias

Versões maiores

● Mais frequentes

● Menores

● Atualize de qualquer versão maior da versão maior anterior

Page 17: Elastic MeetUp Porto Alegre

Atualizando

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html

Importante

1. Verifique se existe alguma quebra de compatibilidade

2. Teste a atualização em um outro ambiente antes de iniciar a atualização em produção

3. Faça backup de seus dados. Você não pode retornar para a versão anterior a não ser que você tenha o backup dos dados para aquela versão

4. Leve seus plugins em consideração para a atualização

Page 18: Elastic MeetUp Porto Alegre

Atualizando

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html

Existem dois tipos de atualização

Rolling Upgrade

● Sem tempo de parada

● Atualizações entre versões 2.x

Full Cluster Restart

● O cluster como um todo deve ser reiniciado e uma estratégia para a parada deve ser criada

● Atualizações entre versões ○ 0.90.x > 2.x○ 1.x > 2x

Page 19: Elastic MeetUp Porto Alegre

Atualizando

Rolling Upgrade...

1. Realize backup dos seus dados (snapshot)

2. Desative a alocação de shards

3. Execute um synced flush

4. Pare a atualize um nó

PUT /_cluster/settings

{

"transient": {

"cluster.routing.allocation.enable": "none"

}

}

POST /_flush/synced

Page 20: Elastic MeetUp Porto Alegre

Atualizando

...Rolling Upgrade

5. Inicie o nó atualizado

6. Reative a alocação dos shards

7. Espere o nó se recuperar

8. Repita os passos para cada nó no cluster

PUT /_cluster/settings

{

"transient": {

"cluster.routing.allocation.enable": "all"

}

}

GET _cat/nodes

GET _cat/health

Page 21: Elastic MeetUp Porto Alegre

Atualizando

Full cluster restart...

1. Realize backup dos seus dados

a. Maior que 1.x

i. Use snapshot

b. .90.x e anteriores

i. Desative o flush dos índices

ii. Desative a realocação

2. Realize o backup dos dados

PUT /_all/_settings

{

"index": {

"translog.disable_flush": "true"

}

}

PUT /_cluster/settings

{

"transient": {

"cluster.routing.allocation.enable": "none"

}

}

Page 22: Elastic MeetUp Porto Alegre

Atualizando

...Full cluster restart...

3. Reative a alocação e o flush

PUT /_all/_settings

{

"index": {

"translog.disable_flush": "false"

}

}

PUT /_cluster/settings

{

"transient": {

"cluster.routing.allocation.enable": "all"

}

}

Page 23: Elastic MeetUp Porto Alegre

Atualizando

...Full cluster restart...

3. Desative a alocação dos shards

4. Execute um synced flush

5. Desative e atualize todos os nós

6. Inicie o cluster

7. Aguarde o cluster ficar amarelo

PUT /_cluster/settings

{

"persistent": {

"cluster.routing.allocation.enable": "none"

}

}

PUT /_cluster/settings

{

"persistent": {

"cluster.routing.allocation.

disable_allocation": true,

"cluster.routing.allocation.enable": "none"

}

}

1.x

0.90.x

Page 24: Elastic MeetUp Porto Alegre

Atualizando

...Full cluster restart

8. Reative a alocação dos shards

9. Monitore o progresso da realocação

PUT /_cluster/settings

{

"persistent": {

"cluster.routing.allocation.enable": "all"

}

}

PUT /_cluster/settings

{

"persistent": {

"cluster.routing.allocation.

disable_allocation": false,

"cluster.routing.allocation.enable": "all"

}

}

1.x

0.90.xGET _cat/health

GET _cat/recovery

Page 25: Elastic MeetUp Porto Alegre

Breaking Changes

Quebras de compatibilidade existentes na versão 2.3:

● REST API○ Problemas com o uso cd CORS nas versões 2.3.0 e 2.3.1 resolvido na versão 2.3.2

● Mapping○ Limite de campos aninhados (nested fields) por padrão passa a ser 50○ É possivel sua definição através da propriedade index.mapping.nested_fields.limit

● Scripting○ Atenção as dependências do seu script Groovy○ Agora para diminuir o volume de dependências para o script o artefato org.codehaus.groovy:

groovy passou a ser utilizado ao inves do org.codehaus.groovy:groovy-all● Analyze API

○ O parâmetro filters/token_filters/char_filters foi renomeado para filter/token_filter/char_filter

Page 26: Elastic MeetUp Porto Alegre

A evolução continua...

5.x