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 comunidade open source
3
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?▣ Como devo usar?▣ Qual a resposta para a pergunta sobre a vida
o universo e tudo mais?
5
‘’“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
Entendendo melhor
▣ Full text search engine□ Baseado no Apache Lucene
▣ Uma interface RESTful▣ Schema less style▣ Open source (o elasticsearch)
7
Como isso funciona?
1.Arquitetur
a8
Funcionamento
Cluster
Node1 Node2
Node3
Shard1
Shard3
Shard3
9
Shard2Shard3
Shard1
Interagindo com o servidor
10
Estrutura de dados
1. Index2. Type3. Document
11
1 2
3
RESTful Response
Na linha do RESTful
index
type
document reference(id)
12parameters
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▣ Comunicação RESTful
16
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.Necessidad
e22
Como fui salvo pelo elasticsearch
23
O Projeto
webservice
database
Client24
A necessidade!
▣ Busca documentos baseado no conteúdo▣ Filtro por opções▣ Filtro por tipos▣ Filtro por hierarquias
Search field
search
25
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/alterar um dado▣ Depois de deletar um dado
29
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 API [1.5] — other versions
● .NET API
● PHP API [1.0] — other versions
● Perl API
● Python API
● Ruby API
31
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
Reposta Json
33
Aggregations
34
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
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 servidor
bloqueado.
40
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://waldemarnt.blogspot.com45