Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,280 views

Published on

Atelier Deep Dive Nuxeo Tour 2014 par Michael Vachette

Published in: Software
  • Be the first to comment

  • Be the first to like this

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'}

×