Drupal
17/11/2016

Le module Drupal en 5W : ElasticSearch

image-illustration-elastic-search
Qu'est-ce qu'Elastic Search, d'où vient-il, qui maintient le module Drupal, pourquoi l'utiliser ?... Et notre avis sur le sujet !

Pour démarrer, il peut être intéressant de rappeler que ce moteur de recherche n’est pas comme DuckDuckGo, Google et ses acolytes, c'est-à-dire que c’est un moteur de recherche implémenté dans un site internet et non une interface graphique.

What : Qu’est-ce qu’est ElasticSearch ?

ElasticSearch est un puissant moteur de recherche open source basé sur Apache Lucene et créé dans le but d’être utilisé sur des solutions déployées à (très très) grande échelle. C’est un moteur de recherche de type NoSQL grâce à son approche orientée document.

Il est composé de deux parties principales, un moteur d’indexation de documents et le moteur de recherche qui sera capable de réaliser ses recherches sur les documents répertoriés dans ses index.

Le moteur d’indexation des documents, « lira » les documents, éliminera les « stop words » et liera les mots non filtrés aux documents dans lesquels ils ont été trouvés. Ainsi, il sera possible pour le moteur de savoir quel mot est présent dans quel(s) document(s) et s’en servira pour rechercher les termes et classer les résultats par ordre de pertinence pour une requête donnée. Il est possible d’effectuer les recherches sur du texte et des critères très poussés que vous choisirez.

Crédit : Séven Le Mesle

Ici la notion de recherche de données à l’aide de requêtes SQL dans une base perd tout son sens… Enfin pas totalement.

Le fonctionnement du moteur de recherche grâce à une base de données est toujours d’actualité, mais cette base de données occupera son rôle : c’est un lieu de stockage des données, et non un lieu de stockage de données couplé à un outil de recherche.

Techniquement, la recherche à partir de la base de données est possible, cependant une problématique de scalabilité s’impose très rapidement - c'est normal puisque la base de données a été pensée pour stocker des données. Le moteur de recherche et d’indexation ont été pensés dès le début pour le classement d’éléments et leur recherche dans leurs indexes.

C’est pour cette raison que nous utilisons la base de données pour stocker le contenu, et les envoyer à Elastic Search qui lui va s’occuper de les classer, de rechercher les données et de les renvoyer au site internet.

Comme le dit si bien le dicton : Chacun son métier et les vaches seront bien gardées.

Plus concrètement, le site enverra les données au moteur d’indexation de manière continue. Le moteur les indexera en tant que documents au format JSON. Lorsqu’une requête est effectuée sur le site, elle est envoyée au moteur de recherche d’ElasticSearch qui opère la recherche dans ses index pour répertorier les documents les plus pertinents. 

On parle de pertinence ? Que dit-on des déclinaisons de mots ?

Une des forces d’ElasticSearch est que des plugins ont été développés pour étendre les capacités du moteur comme Completion Suggester qui proposera des suggestions de résultats pendant l’écriture des mots clés sur le champ de recherche ou Phonetic Matching qui, lorsque vous rechercherez un mot, rattachera automatiquement ses déclinaisons et les mots s’en approchant à la recherche.

L’utilisation du module « Elasticsearch Connector » va permettre d’implémenter tout l’écosystème ElasticSearch sur un site internet développé grâce à la technologie Drupal.

Who : Qui a créé ce moteur de recherche et qui le maintien sur Drupal ?

Les créateurs du moteur de recherche

Shay Banon est le créateur de la solution ElasticSearch. Il a travaillé plus de dix ans à la création de systèmes distribués ainsi qu’à la création de solutions de recherche Open Source. C’est lui qui a initié le projet et démarré le développement.

Steven Schuurman est un des co-fondateurs d’ElasticSearch. Il gère quant à lui la partie management de l’équipe exécutive au sein de la société. Mais avant de créer ElasticSearch, Steven Schuurman a été le directeur exécutif d’Orange11 et le créateur de SpringSource, entreprise revendue à VMware en 2009.

Uri Boness est un des co-fondateurs d’ElasticSearch. Une partie de sa carrière est axée sur les technologies en rapport avec Apache Lucene. Aujourd’hui Uri Boness est toujours un membre très actif dans la communauté Lucene avec de multiples contributions à des projets Open Source.

Simon Willnauer est un contributeur au cœur de Lucene et membre de la Fondation Apache Software. Il travaille avec Lucene depuis 2006 et a contribué à plusieurs autres projets open source dans et hors de la Fondation Apache Software.

Mainteneurs du module Drupal d’ElasticSearch

Nikolay Ignatov (skek) est l’un des deux mainteneurs principaux d’ElasticSearch dans Drupal. Nikolay est le créateur de NodeSpark et son profil Linkedin en dit beaucoup sur le sérieux et la précision qu’il sait mettre en œuvre dans ses projets, notamment dans ElasticSearch.

Lachezar Valchev (lachezar.valchev) : Co-mainteneur du connecteur ElasticSearch depuis des années, il est reconnu dans la communauté Drupal pour ses compétences, à tel point qu’il a contribué au développement du core de Drupal, et ça c’est fort.

When : Quand a-t-il été créé ?

Shay Banon a créé Compas (l’ancêtre d’ElasticSearch) en 2004. Lors d’une grande refonte, il a été amené à réécrire une grande partie du programme, ce qui a donc donné naissance à  la première version d’ElasticSearch déployée en février 2010.

En 2012, la société Elasticsearch BV a été fondée dans le but de proposer des services commerciaux autour de la solution ElasticSearch. En 2014, la société lève 70 millions de dollars, seulement 18 mois après la création de l’entreprise.

Aujourd’hui, la valorisation totale de l’entreprise est estimée à  700 millions de dollars, de quoi faire rêver plus d’un entrepreneur.

Aujourd’hui, ElasticSearch est en version 5.0 suite à une mise à jour majeure.

Where : Où a été créé ElastiSearch ?

Shay Banon a créé ElasticSearch et son entreprise dans son pays d’origine : Les Pays-Bas. Nulle question de déménagement sur la côte Américaine pour profiter du soleil et de la Silicon Valley. La Hollande c’est bien, et c’est l’emplacement du quartier général d’Elasticsearch BV.

Du côté du logiciel, la solution est disponible sur les plus grands sites mondiaux. Parmi ceux-ci, nous trouvons Amazon, Facebook et même la start-up à succès made in France : BlaBlaCar.

Chez bluedrop.fr, nous l'avons déployé sur quelques projets Drupal, alors contactez-nous pour mettre notre savoir-faire au service de votre projet.

Why : Pourquoi avoir créé ElasticSearch ?

ElasticSearch a été créée alors que Shay Banon devait réécrire une très grande partie de Compas. Il s’est alors rendu compte qu’il avait besoin de créer une solution scalable à très grande échelle. C'est l'origine de la naissance d'ElasticSearch. Le but recherché par la création de cette solution était d’être capable d’indexer des millions de documents et de permettre de rechercher des éléments et restituer les résultats en un temps record.

Conclusion : Notre avis sur cette solution

De pars sa flexibilité, sa performance et sa faculté à être très hautement scalable, ElasticSearch s'avère être la solution idéale lorsqu'il est question d'indexer un très grand nombre de documents et d'effecter une recherche dans ceux-ci en moins d'un dixième de seconde.

Du point de vue de la mise en place de cette solution, notamment sur Drupal, la présence du module connecteur permet son installation rapide et efficace. C'est ce qui en fait une solution d'indexation et de recherche performante.

Ce que nous avons tout de suite apprécié chez ElasticSearch c’est sa faculté à s’installer facilement sur le serveur. Au-delà de cet aspect, c’est surtout son système de recherche en temps réel qui a fait la différence grâce à sa simplicité d’utilisation et sa rapidité.

Son avantage concurrentiel réside dans le fait qu’ElasticSearch découpe les index en shards (petits indexes) qui peuvent être répliqués sur plusieurs nœuds. Cette fonctionnalité est déterminante lorsqu’il est nécessaire d’indexer un très grand volume de documents.  

Lors de son intégration à Drupal, nous avons utilisé ElasticSearch Connectors qui s’avère compatible avec Search API et Facet API.

Nous sommes soucieux de vous partager nos expériences. N'hésitez pas à nous faire part des vôtres ! Vous aimez ce que nous faisons ? Contactez-nous et travaillons ensemble sur votre projet.

 

- Douichen Sofiane