Como o elasticsearch salvou minhas buscas

1.064 visualizações

Publicada em

Como o elasticsearch salvou minhas buscas foi uma talk no evento The Developers conference em Florianopolis Santa Catarina.

Onde falo sobre o elasticsearch e tambem sobre a implementação em um caso de uso normal.

Publicada em: Internet
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.064
No SlideShare
0
A partir de incorporações
0
Número de incorporações
23
Ações
Compartilhamentos
0
Downloads
28
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Como o elasticsearch salvou minhas buscas

  1. 1. Como o elasticsearch salvou minhas buscas
  2. 2. Opa! Sou o Waldemar Neto Vocês podem me encontrar como @waldemarnt nas redes sociais 2
  3. 3. Sobre essa pessoa ▣ Gaúcho de Pelotas ▣ Desenvolvedor ▣ 6 anos de mercado ▣ Focado na área web ▣ Contribuidor na comunidade open source 3
  4. 4. Conrad Caine Argentina Pelotas Alemanha 4
  5. 5. Obrigado pelos peixes, mas e ai? ▣ O que é exatamente o elasticsearch? ▣ Como ele salvou minhas buscas? ▣ Quando devo usar? ▣ Como devo usar? ▣ Qual a resposta para a pergunta sobre a vida o universo e tudo mais? 5
  6. 6. ‘’ “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 6
  7. 7. Entendendo melhor ▣ Full text search engine □ Baseado no Apache Lucene ▣ Uma interface RESTful ▣ Schema less style ▣ Open source (o elasticsearch) 7
  8. 8. Como isso funciona? 1. Arquitetura 8
  9. 9. Funcionamento Cluster Node1 Node2 Node3 Shard1 Shard3 Shard3 9 Shard2 Shard3 Shard1
  10. 10. Interagindo com o servidor 10
  11. 11. Estrutura de dados 1. Index 2. Type 3. Document 11 1 2 3 RESTful Response
  12. 12. Na linha do RESTful index type document reference(id) 12 parameters
  13. 13. Mapping ▣ NoSql style ▣ Pode ser criado manualmente ▣ Pode ser alterado dinamicamente 13
  14. 14. Índice invertido, onde a magia acontece Term Doc_1 Doc_2 Doc_3 Waldemar x x Bicicleta x x x Avião x 14
  15. 15. ‘’ “Keep your data simple, your documents clear and I’ll deliver faster than light” 15
  16. 16. O que o elasticsearch me oferece? ▣ Queries ▣ Filtros ▣ Geolocation ▣ Aggregations ▣ Full Text Search ▣ Escalabilidade ▣ Comunicação RESTful 16
  17. 17. Query 17 SENSE CHROME EXTENSION
  18. 18. Resposta 18 INFORMAÇÃO PADRÃO TOTAL DE SHARDS CONTEUDO
  19. 19. Filtros 19 FILTROS NÃO SÃO CACHEADOS _cache: true
  20. 20. Aggregations 20 AGREGAR O CAMPO REF CHAVE E QUANTIDADE
  21. 21. 21 NÃO DESTRUA TUDO
  22. 22. Quando o elastic se tornou o diferencial 2. Necessidade 22
  23. 23. Como fui salvo pelo elasticsearch 23
  24. 24. O Projeto webservice database Client 24
  25. 25. A necessidade! ▣ Busca documentos baseado no conteúdo ▣ Filtro por opções ▣ Filtro por tipos ▣ Filtro por hierarquias Search field search 25
  26. 26. Armazenando como necessário ▣ O que precisava ser buscado? ▣ Onde estava isso? ▣ Como poderia ser facilitado? 26
  27. 27. Sincronizando dados com o elasticsearch 3. Integração 27
  28. 28. Comunicação Client x Elastic ▣ Preparação de dados ▣ Armazenamento ▣ Verificações 28
  29. 29. Usando callbacks e eventos Uma maneira de manter a sincronia entre a aplicação e o servidor de buscas. ▣ Depois de salvar/alterar um dado ▣ Depois de deletar um dado 29
  30. 30. Mantendo controle dos dados ▣ Re-indexar todo o conteúdo ▣ Verificar o conteúdo 30
  31. 31. Bibliotecas apoiadas pelo elasticsearch ● Java API [1.5] — other versions ● JavaScript API [4.0] — other versions ● Groovy API [1.5] — other versions ● .NET API ● PHP API [1.0] — other versions ● Perl API ● Python API ● Ruby API 31
  32. 32. Javascript API e busca real-time Fácil interação var elasticsearch = require('elasticsearch'); var client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' }); 32
  33. 33. Reposta Json 33
  34. 34. Aggregations 34
  35. 35. Os clients externos na jogada ▣ Milhares de aplicativo fazendo buscas ▣ Diversas partes do mundo ▣ Nem tudo é um mar de rosas, e a segurança desse RESTful? 35
  36. 36. Como proteger o servidor sem alterar seu desempenho? 4. Segurança 36
  37. 37. ▣ Autorização ▣ Niveis de acesso ▣ Logs ▣ Filtros de IP ▣ Um produto pago Shield 37
  38. 38. Proteção sem gasto ▣ NGIX Proxy reverso ▣ Seu proprio “Shield” 38
  39. 39. Proxy Reverso ▣ Http Authorization 39
  40. 40. O Seu próprio Shield ▣ Um pouco de OAuth2 ▣ Um pouco de NodeJS ▣ Um pouco de MongoDB ▣ Sua própria porta ▣ Todo acesso ao servidor bloqueado. 40
  41. 41. Monitoramento ▣ Zabbix ▣ Nagios 41
  42. 42. Mas e ai, o que temos hoje? 5. Resultado 42
  43. 43. 100.000+Documentos indexados 200msTempo medio de resposta para as requisições 30.000+Dispositivos consultando 43
  44. 44. 44 ESTABILIDADE
  45. 45. Thanks! Perguntas? https://github.com/waldemarnt https://twitter.com/waldemarnt https://fb.com/waldemarnt https://waldemarnt.blogspot.com 45

×