Pour ceux qui ne connaissent pas ou qui veulent débuter dans le Big Data et dans le développement Big Data, ElasticSearch est la solutions pour vous. Déjà, Elastic Search est un moteur de recherche open source et il suffit de quelques minutes à peine pour disposer d’un moteur de recherche clusterisé, automatiquement sauvegardé et répliqué, qui est interrogeable via une API REST et proposant toutes les fonctionnalités d’un moteur de recherche dernière génération.

La documentation est trés complète, la prise en mains rapide. Mais il faudra quand même un certain temps pour s’habituer à la complexité du moteur de recherche.

ElasticSearch : what is it?

ElasticSearch est un projet open source développé en Java sous licence Apache2. Le projet a été présenté par son créateur, Shay Banon, comme le successeur du framework Compass (un framework de mapping objet / moteur de recherche partageant des similitudes avec Hibernate Search).

La première version d’ElasticSearch est sortie en février 2010. Des updates sont très souvent souvent sorties.

ElasticSearch est très utilisé en production par des organisations importantes telles que la Fondation Mozilla, Foursquare, Yfrog (950 millions de documents indexés), Klout ainsi que la Douane Française.

Largement adopté par les utilisateurs et les développeurs, le projet compte de nombreux contributeurs et approche les 3000 followers sur son repository GitHub.

Au cœur du projet, Apache Lucene

ElasticSearch est basé sur l’excellente librairie Apache Lucene. Cette librairie existe depuis de nombreuses années et est au cœur de nombreux moteurs de recherche open source (le plus connu étant Apache SolR). Elle fournit toutes les classes Java nécessaires à l’indexation de documents et à l’exécution des requêtes de recherches.

Lucene n’est cependant pas trés fiable pour des applications gérant beaucoup de requêtes surtout lorsque ces requêtes sont soumises en même temps.

ElasticSearch facilite l’utilisation de Lucene en intégrant la librairie dans une application Java modulaire, facilement configurable et capable de fonctionner en cluster. Un raccourci rapide serait de définir ElasticSearch comme un Lucene dans le Cloud, c’est à dire un cluster de Lucene.

Super tout ça :s mais Elastic Search marche comment?

ElasticSearch est un moteur de recherche composé d’un moteur d’indexation de documents et d’un moteur de recherche sur les index: DONC PAS DE BASE DE DONNEES. Les données sont enregistrées en JSON permettant ainsi au moteur d’être très flexible sur les requêtes.

Le moteur d’indexation d’ElasticSearch va indexer automatiquement les données qu’on lui injecte et va les traiter en une seule fois en leur donnant de multiples liens et des catégories. Cela va permettre d’accélérer la recherche en évitant de parcourir l’ensemble des documents lors d’une recherche spécifique sur un terme.

En plus de l’indexation de données, l’analyse des données par les agrégations vont fournir des résultats sur la recherche effectuée sous forme de métriques (hits, score, …), que le développeur pourra traiter pour affiner sa recherche.

Les développeurs vont donc pouvoir remplir des graphiques ou tout autres modules de reporting. Sauf que EleasticSearch propose KIBANA, l’outil officiel d’ElasticSearch pour le reporting. Extrêmement « elastic » (^^), Kibana vous montre ce que vous voulez et peut se présenter de différentes manières suivant vos besoins et votre manière de présenter les informations. Voici un exemple:

 

Conclusion

Je suis personnellement en train de tester et je suis agréablement surpris de la simplicité de l’outil. Il faut quand bien même beaucoup de temps pour bien comprendre ElasticSearch et faire les bonnes requêtes. Cependant l’outil est trés puissant et c’est absolument génial pour la collecte de Data.