View
52
Download
1
Category
Preview:
Citation preview
Substituindo navegação multi-etapa por busca
Elastic MeetUp Porto Alegre22 de Julho de 2016
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
+ 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
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
Agenda
● A evolução do Elastic Stack
● Atualizando
● Compatibilidade na versão 2.3
A evolução do Elastic Stack
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
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
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
A evolução do Elastic Stack
Resiliência do Cluster, Checksums em todo o lugar, Lock down scripting, Tornar Doc Values mais rápido
A evolução do Elastic Stack
Tornar rolling restarts mais fáceis: Synced flush, Delayed allocation, Cancellable allocation
A evolução do Elastic Stack
Consertar todas as coisas!
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
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
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.
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
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
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
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
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
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"
}
}
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"
}
}
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
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
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
A evolução continua...
5.x
Obrigado!Rafael Gomesrafael.gomes@e-storageonline.com.br+55-51-9283-9835
Recommended