EA2014 Elasticsearch

= Présentation =


 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2014)
 * Sujet : ElasticSearch
 * Date : 3 octobre 2014
 * Auteur : Ginoux Pierre-Henri 
 * * Lien vers les slides de la présentation : [[Media:ElasticSearch.pdf]]

Mots-clés
ElasticSearch, Cluster, Temps réel, Moteur de recherche

Résumé
Elasticsearch est un outil facile d'utilisation, qui permet les indexages les plus simple comme les plus complexes. Il suffit de seulement quelques minutes d'installation pour disposer d'un moteur de recherche puissant, avec une API très fournie et qui propose toutes les fonctionnalités d'un moteur de recherche dernière génération. C'est un système distribué, s'appuyant sur le moteur de recherche Apache Lucene.

ElasticSearch s'appuie sur une structure en cluster, avec un noeud maître et une multitude de noeuds esclave. L'API est très fournie, et toute les requêtes se font via le format JSON.

Abstract
Elasticsearch is a flexible and powerful open source, distributed, real-time search and analytics engine. This tool is designed to be used in distributed environments.

Description de ElasticSearch
ElasticSarch se base sur la librairie apache Lucene, qui fournit toutes les classes Java nécessaires à l'indexation de documents et à l'exécution des requêtes de recherches. Cette librairie est une librairie de bas niveau, par conséquent l'intégration dans des applications qui doivent gérer un grand nombre de requêtes et un grand nombre de données peut être très complexe.

ElasticSearch propose une application modulaire, et facilement configurable qui permet de mettre en place un outil de recherche en quelque minutes. Ce système distribué avec une architecture en cluster permet d’adapter cette solution en fonction de ses besoins; en effet il suffit d'ajouter des machines ( noeuds ) pour augmenter les performances. ElasticSearch propose un moteur de recherche complet, qui inclue toutes les fonctionnalités das moteurs de recherche les plus puissants du marché :
 * Recherche par mot clef
 * Recherche par combinaison de critères et de filtres
 * Tri et pagination des résultats
 * Gestion des synonymes
 * Navigation par facette

Les principaux atouts de ElasticSearch
Tout d'abord, ElasticSearch est un outil qui évolue très très vite, avec des release régulières. Sa très bonne gestion des données en temps réel est aussi un atout de poids par rapport à ses concurrents. L'architecture d'ElasticSearch est également très robuste, en effet, lorsque qu'une panne survient, l'ensemble du cluster est réorganisé automatiquement pour permettre le bon fonctionnement du système. L'indexage se fait à partir de requête contenant un objet au format JSON, ce qui permet aussi bien la création d'indexes simple comme d'indexes très complexes. ElasticSearch propose également une API très complète et simple à utiliser, via le protocole http et le format JSON. Des clients sont disponibles pour la majorité des langages de programmation. L'injection de données sous forme de River permet également l'ajout de données en masse, et la navigation par facette permet une très grande lisibilité des réponses aux requêtes. Par exemple, si vous taper le mot clef "voiture" dans la barre de recherche, les résultats seront par exemple classés par concessionnaire, et si vous taper le nom d'une catégorie de produits, l'ensemble des résultats pourra par exemple être classé par intervalles de prix.

Exemples concrets d'utilisation
Maptimize utilise ElasticSearch pour permettre d'afficher des millions de points sur une map, avec toute les mises à jours en temps réel :

Deezer, quand à lui, l'utilise pour gérer des millions de recherches et un catalogue avec 40 millions d’entrées. ElasticSearch est également utilisé par GitHub pour indexer ses quelque 8 millions de répertoires de codes

Exemple sur site e-commerce réalisé en RICM5 à venir ;)

Les concurrents
Le principal concurrent d'ElasticSearch s'avère être Solr, même si ce dernier est moins performant sur la gestion du temps réel, il propose en revanche plus de connecteurs vers des sources de données type Sharepoint (outil de collaboration pour entreprise). Il existes beaucoup d'autres concurrents, comme par exemple Sphinx et Xapian, mais qui s'avèrent actuellement globalement moins bon qu'ElasticSearch.

Tutoriel d'installation et de test
Voici un tutoriel très simple que j'ai moi même testé et qui vous permettra de faire vos premiers pas avec ElasticSearch : http://blog.zenika.com/index.php?post/2012/11/14/Premiers-pas-avec-ElasticSearch-Partie-1