migrer une application existante vers elasticsearch - nuxeo tour 2014 - workshop
DESCRIPTION
Atelier Deep Dive Nuxeo Tour 2014 par Michael VachetteTRANSCRIPT
Migrer une application existante vers Elasticsearch Michaël Vachette
Hier …
Architecture
Nuxeo !Platform!
SQL !Database! FS!
Montée en charge
Nuxeo !Platform!
SQL !Database! FS!
Nuxeo !Platform!
Nuxeo !Platform!
Cluster
Montée en charge
Nuxeo !Platform!
SQL !Database! FS!
Nuxeo !Platform!
Nuxeo !Platform!
RAM/CPU
Cluster
Montée en charge
Nuxeo !Platform!
SQL !Database! FS!
Nuxeo !Platform!
Nuxeo !Platform!
RAM/CPU Distribuer les I/0
Cluster
Montée en charge
Nuxeo !Platform!
SQL !Database! FS!
Nuxeo !Platform!
Nuxeo !Platform!
RAM/CPU Distribuer les I/0
Cluster
DB: Les opérations coûteuses
• Déplacer/copier/supprimer une arborescence
DB: Les opérations coûteuses
• Déplacer/copier/supprimer une arborescence Ponctuel!
DB: Les opérations coûteuses
• Déplacer/copier/supprimer une arborescence
• La recherche
Ponctuel!
DB: Les opérations coûteuses
• Déplacer/copier/supprimer une arborescence
• La recherche
Ponctuel!
Régulier!
Recherche: limitations
• Pas de possibilité de distribuer les requêtes sur plusieurs bases de données
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
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 …
La solution:
Intégrer un moteur de recherche
elasticsearch : c’est quoi ?
• Un moteur de recherche open-source
elasticsearch : c’est quoi ?
• Un moteur de recherche open-source
• Architecture distribuée
elasticsearch : c’est quoi ?
• Un moteur de recherche open-source
• Architecture distribuée
• Pas de schéma de données
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
Architecture
Nuxeo !Platform!
SQL !Database! FS!
Elasticsearch!
Montée en charge
Nuxeo !Platform!
SQL !Database! FS!
Elasticsearch!
Elasticsearch!
Montée en charge
Nuxeo !Platform!
SQL !Database! FS!
Elasticsearch!
Elasticsearch!
Elasticsearch!
Intégration • Requêtes en langage NXQL
Intégration • Requêtes en langage NXQL
• Réutilisation du concept de Page Provider
Intégration • Requêtes en langage NXQL
• Réutilisation du concept de Page Provider
• Intégration transparente dans les Content Views
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
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
Performances
Comparaison DB / ES
Pour 1 milliard de documents
Les ajouts fonctionnels
Les facettes
Recherche plein texte
La prise en compte des:
• Caractères accentués
• Pluriels
• Apostrophes
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
Installation
Nuxeo
Package Marketplace pour Nuxeo 5.8 et Nuxeo 6.0
Elasticsearch
http://www.elasticsearch.org/resources/
Configuration
Configuration
• Configuration de Nuxeo Platform
• Configuration de l’index nuxeo
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
Configuration de l’index
• Template Elasticsearch
• Deux configurations disponibles : • français
• anglais (défaut)
Configuration de l’index
Ces ateliers sont vraiment très intéressants.
Configuration de l’index
Ces ateliers sont vraiment très intéressants.
Analyzer!
Configuration de l’index
Ces ateliers sont vraiment très intéressants.
Analyzer!Tokenizer! Ces ateliers sont vraiment très intéressants
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
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
Commandes utiles
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'}