Top Banner
Migrer une application existante vers Elasticsearch Michaël Vachette
48

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

Dec 18, 2014

Download

Software

Nuxeo

Atelier Deep Dive Nuxeo Tour 2014 par Michael Vachette
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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'}