migrer une application existante vers elasticsearch - nuxeo tour 2014 - workshop

48
Migrer une application existante vers Elasticsearch Michaël Vachette

Upload: nuxeo

Post on 18-Dec-2014

116 views

Category:

Software


0 download

DESCRIPTION

Atelier Deep Dive Nuxeo Tour 2014 par Michael Vachette

TRANSCRIPT

Page 1: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Migrer une application existante vers Elasticsearch Michaël Vachette

Page 2: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Hier …

Page 3: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Architecture

Nuxeo !Platform!

SQL !Database! FS!

Page 4: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Montée en charge

Nuxeo !Platform!

SQL !Database! FS!

Nuxeo !Platform!

Nuxeo !Platform!

Cluster

Page 5: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Montée en charge

Nuxeo !Platform!

SQL !Database! FS!

Nuxeo !Platform!

Nuxeo !Platform!

RAM/CPU

Cluster

Page 6: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Montée en charge

Nuxeo !Platform!

SQL !Database! FS!

Nuxeo !Platform!

Nuxeo !Platform!

RAM/CPU Distribuer les I/0

Cluster

Page 7: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Montée en charge

Nuxeo !Platform!

SQL !Database! FS!

Nuxeo !Platform!

Nuxeo !Platform!

RAM/CPU Distribuer les I/0

Cluster

Page 8: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

DB: Les opérations coûteuses

•  Déplacer/copier/supprimer une arborescence

Page 9: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

DB: Les opérations coûteuses

•  Déplacer/copier/supprimer une arborescence Ponctuel!

Page 10: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

DB: Les opérations coûteuses

•  Déplacer/copier/supprimer une arborescence

•  La recherche

Ponctuel!

Page 11: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

DB: Les opérations coûteuses

•  Déplacer/copier/supprimer une arborescence

•  La recherche

Ponctuel!

Régulier!

Page 12: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Recherche: limitations

•  Pas de possibilité de distribuer les requêtes sur plusieurs bases de données

Page 13: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Recherche: limitations

•  Pas de possibilité de distribuer les requêtes sur plusieurs bases de données

•  Toutes les bases de données ne proposent pas les mêmes fonctionnalités de recherche

Page 14: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Recherche: limitations

•  Pas de possibilité de distribuer les requêtes sur plusieurs bases de données

•  Toutes les bases de données ne proposent pas les mêmes fonctionnalités de recherche

•  Pas de facettes, synonymes, mots proches …

Page 15: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

La solution:

Intégrer un moteur de recherche

Page 16: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

elasticsearch : c’est quoi ?

•  Un moteur de recherche open-source

Page 17: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

elasticsearch : c’est quoi ?

•  Un moteur de recherche open-source

•  Architecture distribuée

Page 18: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

elasticsearch : c’est quoi ?

•  Un moteur de recherche open-source

•  Architecture distribuée

•  Pas de schéma de données

Page 19: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

elasticsearch : c’est quoi ?

•  Un moteur de recherche open-source

•  Architecture distribuée

•  Pas de schéma de données

•  JSON over HTTP pour la communication

Page 20: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Architecture

Nuxeo !Platform!

SQL !Database! FS!

Elasticsearch!

Page 21: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Montée en charge

Nuxeo !Platform!

SQL !Database! FS!

Elasticsearch!

Elasticsearch!

Page 22: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Montée en charge

Nuxeo !Platform!

SQL !Database! FS!

Elasticsearch!

Elasticsearch!

Elasticsearch!

Page 23: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Intégration •  Requêtes en langage NXQL

Page 24: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Intégration •  Requêtes en langage NXQL

•  Réutilisation du concept de Page Provider

Page 25: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Intégration •  Requêtes en langage NXQL

•  Réutilisation du concept de Page Provider

•  Intégration transparente dans les Content Views

Page 26: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Intégration •  Requêtes en langage NXQL

•  Réutilisation du concept de Page Provider

•  Intégration transparente dans les Content Views

•  Les ACL sont indexées dans ES

Page 27: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Intégration •  Requêtes en langage NXQL

•  Réutilisation du concept de Page Provider

•  Intégration transparente dans les Content Views

•  Les ACL sont indexées dans ES

•  La configuration des index ES est indépendante de Nuxeo Platform

Page 28: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Performances

Page 29: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Comparaison DB / ES

Page 30: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Pour 1 milliard de documents

Page 31: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Les ajouts fonctionnels

Page 32: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Les facettes

Page 33: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Recherche plein texte

La prise en compte des:

• Caractères accentués

• Pluriels

• Apostrophes

Page 34: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Prochaines versions de Nuxeo

• Recherche par mots proches

• Extrait de document dans les résultats

… en fonction des retours d’expérience et des demandes clients

Page 35: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Installation

Page 36: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Nuxeo

Package Marketplace pour Nuxeo 5.8 et Nuxeo 6.0

Page 37: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Elasticsearch

http://www.elasticsearch.org/resources/

Page 38: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration

Page 39: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration

• Configuration de Nuxeo Platform

• Configuration de l’index nuxeo

Page 40: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration Nuxeo Platform

Paramètre du fichier nuxeo.conf: # Name of the Elasticsearch index for Nuxeo documents elasticsearch.indexName=nuxeo

# Comma separated list of Elasticsearch nodes, if empty use a local in JVM node elasticsearch.addressList=host:9300

# Name of the Elasticsearch cluster to join elasticsearch.clusterName=nuxeoCluster

# Number of replicas (not for local node) elasticsearch.indexNumberOfReplicas=1

# Number of shards (not for local node) elasticsearch.indexNumberOfShards=5

# Name of the local node elasticsearch.nodeName=nuxeoNode

Page 41: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration de l’index

•  Template Elasticsearch

• Deux configurations disponibles : •  français

•  anglais (défaut)

Page 42: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration de l’index

Ces ateliers sont vraiment très intéressants.

Page 43: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration de l’index

Ces ateliers sont vraiment très intéressants.

Analyzer!

Page 44: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration de l’index

Ces ateliers sont vraiment très intéressants.

Analyzer!Tokenizer! Ces ateliers sont vraiment très intéressants

Page 45: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration de l’index

Ces ateliers sont vraiment très intéressants.

Analyzer!Tokenizer! Ces ateliers sont vraiment très intéressants

stop words! ateliers vraiment très intéressants Cet est

Page 46: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Configuration de l’index

Ces ateliers sont vraiment très intéressants.

Analyzer!Tokenizer! Ces ateliers sont vraiment très intéressants

lower case !

stemmer!

ateliers vraiment très intéressants

ateli vraiment très intéressant

ascii folding! ateli vraiment tres interessant

stop words! ateliers vraiment très intéressants Cet est

Page 47: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Commandes utiles

Page 48: Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

Elasticsearch

Etat d'un nœud local

curl -XGET 'http://localhost:9200/_nodes?pretty'

curl -Method GET 'http://localhost:9200/_nodes?pretty'

Suppression d'un index

curl -XDELETE 'http://localhost:9200/nuxeo/'

curl -Method DELETE 'http://localhost:9200/nuxeo/'

Analyse d'un texte

curl -XPOST 'http://localhost:9200/nuxeo/_analyze?analyzer=fulltext&pretty' -d {'slide'}

curl -Method Post 'http://localhost:9200/nuxeo/_analyze?analyzer=fulltext&pretty' -d {'slide'}