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

Symfony2 e Elasticsearch com FosElasticaBundle