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

Como o elasticsearch salvou minhas buscas

1.199 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

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

×