47
Symfony2 + Elasticsearch making the world a better place

Symfony2 e Elasticsearch com FosElasticaBundle

Embed Size (px)

Citation preview

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

Elasticsearchbusca 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. Score1.1. Bicicleta 31.2. Waldemar 21.3. Avião 1

Overview do ecossistema

16

CLUSTER

NODE

SHARD REPLICA

Escalonamento

17

CLUSTER

NODE 1 - MASTER

SHARD1 REPLICA3

NODE 2

SHARD2 REPLICA1

NODE 3

SHARD3 REPLICA2

Indexando um documento

18

CLUSTER

NODE 1 - MASTER

SHARD1 REPLICA3

NODE 2

SHARD2 REPLICA1

NODE 3

SHARD3 REPLICA2CLIENT

Buscando documentos

19

CLUSTER

NODE 1 - MASTER

SHARD1 REPLICA3

NODE 2

SHARD2 REPLICA1

NODE 3

SHARD3 REPLICA2CLIENT

Falhas no cluster

20

CLUSTER

NODE 1 - MASTER

SHARD1 REPLICA3

NODE 2

SHARD2 REPLICA1

NODE 3

SHARD3 REPLICA2

Cluster Health

● Verde● Amarelo● Vermelho

21

Interagindo com o servidor

22

Estrutura de dados

1. Index2. Type3. Document

23

1 2

3

RESTful Response

Na linha do RESTful

index

type

document reference(id)

24parameters

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 website28

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 Json38

BoolQuery com MatchQuery usando ElasticaBundle39

40

Renderizando resultado

E o use case?

100.000+Documentos indexados

200msTempo 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.co47