SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Symfony2 + Elasticsearchmaking the world a better place
E eu?
2
Waldemar Neto @waldemarnt
http://walde.co/
Vamos falar de que?
3
Vamos falar de que?
4
Voltando 3 anos no tempo
5
A necessidade
6
Buscas avançadas
7
Elasticsearch
busca em tempo real
‘’
“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
9
10
Quem usa?
Fonte: https://www.elastic.co/use-cases
O Apache Lucene
11
REST API
12
Como isso
funciona?
1.
Ecossistema
13
Termos comuns
● Cluster
● Node
● Index
● Shard
● Replica
● Type
● Document
● Term
14
Índice invertido, onde a magia acontece
Term Doc_1 Doc_2 Doc_3
Waldemar x x
Bicicleta x x x
Avião x
15
1. Score
1.1. Bicicleta 3
1.2. Waldemar 2
1.3. Avião 1
Overview do ecossistema
16
CLUSTER
NODE
SHARD REPLICA
Escalonamento
17
CLUSTER
NODE 1 - MASTER
SHARD1
REPLICA
3
NODE 2
SHARD2
REPLICA
1
NODE 3
SHARD3
REPLICA
2
Indexando um documento
18
CLUSTER
NODE 1 - MASTER
SHARD1
REPLICA
3
NODE 2
SHARD2
REPLICA
1
NODE 3
SHARD3
REPLICA
2
CLIENT
Buscando documentos
19
CLUSTER
NODE 1 - MASTER
SHARD1
REPLICA
3
NODE 2
SHARD2
REPLICA
1
NODE 3
SHARD3
REPLICA
2
CLIENT
Falhas no cluster
20
CLUSTER
NODE 1 - MASTER
SHARD1
REPLICA
3
NODE 2
SHARD2
REPLICA
1
NODE 3
SHARD3
REPLICA
2
Cluster Health
● Verde
● Amarelo
● Vermelho
21
Interagindo com o servidor
22
Estrutura de dados
1. Index
2. Type
3. Document
23
1 2
3
RESTful Response
Na linha do RESTful
index
type
document reference(id)
24
parameters
Mapping
▣ NoSql style
▣ Pode ser criado manualmente
▣ Pode ser alterado dinamicamente
25
O que o elasticsearch me oferece?
▣ Queries
▣ Filtros
▣ Geolocation
▣ Aggregations
▣ Full Text Search
▣ Escalabilidade
▣ Comunicação RESTful
26
E o Symfony?
Symfony.com website
28
Integrando Symfony e Elasticsearch
29
FosElasticaBundle
Configurando FosElasticaBundle
30
Sincronizando dados
31
Listeners
32
Entidades Doctrine
Trabalhando junto com Doctrine
33
User
Posts
Queries
Buscando uma entidade
35
Criando uma busca
36
Montando Queries
37
BoolQuery com Match em Json
38
BoolQuery com MatchQuery usando ElasticaBundle
39
40
Renderizando resultado
E o use case?
100.000+
Documentos indexados
200ms
Tempo médio de resposta para as requisições
30.000+
Dispositivos consultando
42
Onde aprende?
44
45
46
E ERAS ISSO
Thanks!
Perguntas?
https://github.com/waldemarnt
https://twitter.com/waldemarnt
https://fb.com/waldemarnt
http://walde.co
47

Mais conteúdo relacionado

Semelhante a Symfony2 e Elasticsearch com FosElasticaBundle (8)

TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
TDC2016POA | Trilha BigData - Respostas em tempo real para perguntas complexa...
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
Apresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em FlorianopolisApresentação no Meetup da Elastic em Florianopolis
Apresentação no Meetup da Elastic em Florianopolis
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para fora
 
Elasticsearch 5.0
Elasticsearch 5.0Elasticsearch 5.0
Elasticsearch 5.0
 
Ferramentas open-source
Ferramentas open-sourceFerramentas open-source
Ferramentas open-source
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 

Mais de Waldemar Neto

Mais de Waldemar Neto (15)

12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords
 
12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords
 
Construindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJSConstruindo APIs testáveis com Node.js - RSJS
Construindo APIs testáveis com Node.js - RSJS
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
ELK introduction
ELK introductionELK introduction
ELK introduction
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queries
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservices
 
Cakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteCakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita gente
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglota
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawns
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsul
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografia
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open source
 

Symfony2 e Elasticsearch com FosElasticaBundle