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 
Cluster 
Nuxeo ! 
Platform! 
SQL ! 
Database! 
FS! 
Nuxeo ! 
Platform! 
Nuxeo ! 
Platform! 
RAM/CPU Dist...
Montée en charge 
Cluster 
Nuxeo ! 
Platform! 
SQL ! 
Database! 
FS! 
Nuxeo ! 
Platform! 
Nuxeo ! 
Platform! 
RAM/CPU Dist...
DB: Les opérations coûteuses 
• Déplacer/copier/supprim 
er une arborescence
DB: Les opérations coûteuses 
• Déplacer/copier/supprim 
er une arborescence Ponctuel!
DB: Les opérations coûteuses 
• Déplacer/copier/supprim 
er une arborescence 
• La recherche 
Ponctuel!
DB: Les opérations coûteuses 
• Déplacer/copier/supprim 
er une arborescence 
• La recherche 
Ponctuel! 
Régulier!
Recherche: limitations 
• Pas de possibilité de distribuer les requêtes su 
r plusieurs bases de données
Recherche: limitations 
• Pas de possibilité de distribuer les requêtes su 
r plusieurs bases de données 
• Toutes les bas...
Recherche: limitations 
• Pas de possibilité de distribuer les requêtes su 
r plusieurs bases de données 
• Toutes les bas...
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 ...
Architecture 
Nuxeo ! 
Platform! 
SQL ! 
Database! 
FS! 
Elasticsearch!
Montée en charge 
Nuxeo ! 
Platform! 
Elasticsearch! 
SQL ! 
Database! 
FS! 
Elasticsearch!
Montée en charge 
Nuxeo ! 
Platform! 
Elasticsearch! 
Elasticsearch! 
SQL ! 
Database! 
FS! 
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 ...
Intégration 
• Requêtes en langage NXQL 
• Réutilisation du concept de Page Provider 
• Intégration transparente dans les ...
Intégration 
• Requêtes en langage NXQL 
• Réutilisation du concept de Page Provider 
• Intégration transparente dans les ...
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 re...
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 
ela...
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 ...
Configuration de l’index 
Ces ateliers sont vraiment très intéressants. 
Analyzer! 
Tokenizer! Ces ateliers sont vraiment ...
Configuration de l’index 
Ces ateliers sont vraiment très intéressants. 
Analyzer! 
Tokenizer! Ces ateliers sont vraiment ...
Commandes utiles
Elasticsearch 
Etat d'un noeud local 
curl -XGET 'http://localhost:9200/_nodes?pretty' 
curl -Method GET 'http://localhost...
Prochain SlideShare
Chargement dans…5
×

Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

1 181 vues

Publié le

Atelier Deep Dive Nuxeo Tour 2014 par Michael Vachette

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 181
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
23
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Migrer une application existante vers Elasticsearch - Nuxeo Tour 2014 - workshop

  1. 1. Migrer une application existante vers Elasticsearch Michaël Vachette
  2. 2. Hier …
  3. 3. Architecture Nuxeo ! Platform! SQL ! Database! FS!
  4. 4. Montée en charge Nuxeo ! Platform! SQL ! Database! FS! Nuxeo ! Platform! Nuxeo ! Platform! Cluster
  5. 5. Montée en charge Nuxeo ! Platform! SQL ! Database! FS! Nuxeo ! Platform! Nuxeo ! Platform! RAM/CPU Cluster
  6. 6. Montée en charge Cluster Nuxeo ! Platform! SQL ! Database! FS! Nuxeo ! Platform! Nuxeo ! Platform! RAM/CPU Distribuer les I/0
  7. 7. Montée en charge Cluster Nuxeo ! Platform! SQL ! Database! FS! Nuxeo ! Platform! Nuxeo ! Platform! RAM/CPU Distribuer les I/0
  8. 8. DB: Les opérations coûteuses • Déplacer/copier/supprim er une arborescence
  9. 9. DB: Les opérations coûteuses • Déplacer/copier/supprim er une arborescence Ponctuel!
  10. 10. DB: Les opérations coûteuses • Déplacer/copier/supprim er une arborescence • La recherche Ponctuel!
  11. 11. DB: Les opérations coûteuses • Déplacer/copier/supprim er une arborescence • La recherche Ponctuel! Régulier!
  12. 12. Recherche: limitations • Pas de possibilité de distribuer les requêtes su r plusieurs bases de données
  13. 13. Recherche: limitations • Pas de possibilité de distribuer les requêtes su r plusieurs bases de données • Toutes les bases de données ne proposent pa s les mêmes fonctionnalités de recherche
  14. 14. Recherche: limitations • Pas de possibilité de distribuer les requêtes su r plusieurs bases de données • Toutes les bases de données ne proposent pa s les mêmes fonctionnalités de recherche • Pas de facettes, synonymes, mots proches …
  15. 15. La solution: Intégrer un moteur de recherche
  16. 16. elasticsearch : c’est quoi ? • Un moteur de recherche open-source
  17. 17. elasticsearch : c’est quoi ? • Un moteur de recherche open-source • Architecture distribuée
  18. 18. elasticsearch : c’est quoi ? • Un moteur de recherche open-source • Architecture distribuée • Pas de schéma de données
  19. 19. 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
  20. 20. Architecture Nuxeo ! Platform! SQL ! Database! FS! Elasticsearch!
  21. 21. Montée en charge Nuxeo ! Platform! Elasticsearch! SQL ! Database! FS! Elasticsearch!
  22. 22. Montée en charge Nuxeo ! Platform! Elasticsearch! Elasticsearch! SQL ! Database! FS! Elasticsearch!
  23. 23. Intégration • Requêtes en langage NXQL
  24. 24. Intégration • Requêtes en langage NXQL • Réutilisation du concept de Page Provider
  25. 25. Intégration • Requêtes en langage NXQL • Réutilisation du concept de Page Provider • Intégration transparente dans les Content Vie ws
  26. 26. Intégration • Requêtes en langage NXQL • Réutilisation du concept de Page Provider • Intégration transparente dans les Content Vie ws • Les ACL sont indexées dans ES
  27. 27. Intégration • Requêtes en langage NXQL • Réutilisation du concept de Page Provider • Intégration transparente dans les Content Vie ws • Les ACL sont indexées dans ES • La configuration des index ES est indépendante de Nuxeo Platform
  28. 28. Performances
  29. 29. Comparaison DB / ES
  30. 30. Pour 1 milliard de documents
  31. 31. Les ajouts fonctionnels
  32. 32. Les facettes
  33. 33. Recherche plein texte La prise en compte des: • Caractères accentués • Pluriels • Apostrophes
  34. 34. 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
  35. 35. Installation
  36. 36. Nuxeo Package Marketplace pour Nuxeo 5.8 et Nuxeo 6.0
  37. 37. Elasticsearch http://www.elasticsearch.org/ resources/
  38. 38. Configuration
  39. 39. Configuration • Configuration de Nuxeo Platform • Configuration de l’index nuxeo
  40. 40. 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
  41. 41. Configuration de l’index • Template Elasticsearch • Deux configurations disponibles : • français • anglais (défaut)
  42. 42. Configuration de l’index Ces ateliers sont vraiment très intéressants.
  43. 43. Configuration de l’index Ces ateliers sont vraiment très intéressants. Analyzer!
  44. 44. Configuration de l’index Ces ateliers sont vraiment très intéressants. Analyzer! Tokenizer! Ces ateliers sont vraiment très intéressants
  45. 45. Configuration de l’index Ces ateliers sont vraiment très intéressants. Analyzer! Tokenizer! Ces ateliers sont vraiment très intéressants stop words!Cet ateliers est vraiment très intéressants
  46. 46. Configuration de l’index Ces ateliers sont vraiment très intéressants. Analyzer! Tokenizer! Ces ateliers sont vraiment très intéressants stop words!Cet ateliers est 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
  47. 47. Commandes utiles
  48. 48. Elasticsearch Etat d'un noeud 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'}

×