Slide 1

Slide 1 text

!!" index quotidiens ça cherche encore ça trouve sans cesse Meetup Elasticsearch - Marseille - 13 octobre 2015

Slide 2

Slide 2 text

0.90.6 1.0 1.3 1.7 2.0 Elasticsearch

Slide 3

Slide 3 text

Jérémy Lecour

Slide 4

Slide 4 text

+2 ans en production fonctionnalités, performance, stabilité Retour d'expérience

Slide 5

Slide 5 text

à quoi ça sert ? Elasticsearch

Slide 6

Slide 6 text

ce que nous en faisons

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

beaucoup de données vites périmées

Slide 9

Slide 9 text

MySQL et MongoDB

Slide 10

Slide 10 text

Elasticsearch

Slide 11

Slide 11 text

Comment ?

Slide 12

Slide 12 text

index permanents index éphémères

Slide 13

Slide 13 text

hotels hotel_id address rating … ~580k docs

Slide 14

Slide 14 text

hotels-20151013 hotel_id address rating search_id 9c8fa011649a-20151013

Slide 15

Slide 15 text

des dizaines de process travaillent en secret

Slide 16

Slide 16 text

results-20151013 hotel_id search_id partner price INSERT BULK INSERT BULK INSERT BULK

Slide 17

Slide 17 text

hotels-20151013 hotel_id address rating search_id UPDATE BULK UPDATE BULK UPDATE BULK GROOVY

Slide 18

Slide 18 text

def update = false def statuses = ['available','full','on_demand','error','pending']
 if ctx._source.ranking == null || ctx._source.ranking > ranking {
 update = true
 ctx._source.ranking = ranking
 }
 if ctx._source.best_price == null || ctx._source.best_price > best_price {
 update = true
 ctx._source.best_price = best_price
 } status_index = statuses.indexOf(status)
 if (status_index >= 0 && statuses.indexOf(ctx._source.status) > status_index) {
 update = true
 ctx._source.status = status
 }
 if (update == false) {
 ctx.op = "none"
 }

Slide 19

Slide 19 text

hotels-20151013 hotel_id address rating search_id status partner best_price ranking +

Slide 20

Slide 20 text

facettes agrégations

Slide 21

Slide 21 text

3-4 requêtes Elasticsearch en 1 requête HTTP

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Index datés

Slide 25

Slide 25 text

templates foo-* foo-1 foo-2 foo-3

Slide 26

Slide 26 text

alias foo-1 foo-2 foo-3 foo-4 { foo

Slide 27

Slide 27 text

routing forcé GET /index?routing=9c8fa011649a-20151013

Slide 28

Slide 28 text

Performance

Slide 29

Slide 29 text

1 nœud master pour l'usage courant

Slide 30

Slide 30 text

1 nœud secondaire en cas de besoin

Slide 31

Slide 31 text

Stabilité

Slide 32

Slide 32 text

fiabilité/prévisibilité

Slide 33

Slide 33 text

API/fonctionnalités

Slide 34

Slide 34 text

Merci

Slide 35

Slide 35 text

[email protected] @jlecour jeremy.wordpress.com github.com/jlecour