Elasticsearch est un système distribué, RESTful, reposant sur le moteur de recherche Apache Lucene. Il est développé par Shay Banon et est publié sous la licence Apache Software. Elasticsearch est développé en Java.
ElasticSearch est une réécriture complète du moteur de recherche Compass par son auteur pour prendre en charge au cœur de l’application la montée en charge horizontale (scalability) ; cette réécriture commencée début 2010 lui permet aussi de profiter des avancées du moteur d’index Lucene. Pour plus de détail, lire The Future of Compass & ElasticSearch.
Sommaire
Un projet dynamique
La communauté
Créée le 19 janvier 2010, avec plus de 1300 utilisateurs et plus de 6000 conversations, la liste de diffusion est le pilier central de la communauté.
Une recherche sur github donne plus de mille dépôts ayant le mot "elasticsearch" dans le titre ou dans la description.
L'entreprise
Elasticsearch, l'entreprise, a été fondé en juillet 2012 par 4 personnes :
- Shay Banon, le développeur principal du projet ;
- Steven Schuurman, businessman à succès (semble-t-il) ;
- et deux développeurs Lucene : Uri Boness et Simon Willnauer.
Quatre mois après, en novembre 2012, une première levée de fonds de 10 M$ est réalisée. Trois mois après, en février 2013, une deuxième levée de fonds de 24 M$ voit le jour.
Après deux ans de développement, Elasticsearch est passé du projet purement open source à une entreprise ayant les moyens de soutenir une base d'utilisateurs grossissant à grande vitesse (plus de deux millions de téléchargements) des deux côtés de l'Atlantique.
Ces fonds leur ont permis d'embaucher les personnes les plus actives de la communauté : créateur de plug-in, de bibliothèque ou encore utilisateurs précoces. Parmi ceux-ci, David Pilato qui a initié la liste de diffusion française. L'entreprise propose maintenant des formations et trois niveaux de support jusqu'au 24x7.
Ressources
Une page de la documentation recense les développements communautaires autour d'Elasticsearch : Wrapper, intégration & plug-ins. Parmi ceux-ci, deux plug-ins majeurs :
- BigDesk qui permet de monitorer son cluster Elasticsearch ;
- Head qui offre une interface web pour interagir avec son cluster Elasticsearch.
Un bon tour d'horizon en français : Au coeur d'ElasticSearch.
Des blogs en anglais qui ont une série d'articles sur le sujet :
Tester ElasticSearch
La configuration de base d'ElasticSearch est faite pour tester rapidement des idées sur un poste de développement. Par exemple, la série de commandes ci-dessous a été faite sur un petit netbook.
Télécharger l'archive
$ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.tar.gz
$ tar xvf elasticsearch-0.90.0.tar.gz
Lancer Elasticsearch
$ cd elasticsearch-0.90.0
$ bin/elasticsearh -f
$ curl -XGET localhost:9200
{
"ok" : true,
"status" : 200,
"name" : "Wreckage",
"version" : {
"number" : "0.90.0",
"snapshot_build" : false
},
"tagline" : "You Know, for Search"
}
Indexer
$ curl -XPOST localhost:9200/test/phrases/1 -d '{"text": "Liberté, Egalité, Fraternité"}'
$ curl -XPOST localhost:9200/test/phrases/2 -d '{"text": "La route est longue mais la voie est libre"}'
$ curl -XPOST localhost:9200/test/phrases/3 -d '{"text": "Less is more"}'
Rechercher
$ curl -XPOST localhost:9200/test/phrases/_search?pretty=true -d '{"query": {"match":{"text":"libre"}}}'
{
"took" : 13,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.095891505,
"hits" : [ {
"_index" : "test",
"_type" : "phrases",
"_id" : "2",
"_score" : 0.095891505, "_source" : {"text": "La route est longue mais la voie est libre"}
} ]
}
}
Nouveautés
La version 0.90.0 est la 18ème version majeure d'Elasticsearch. Depuis la version 0.19, les sorties sont précédées d'une série de BETA et RC.
Les principales nouveautés de cette version sont :
- Passage en version 4.2 de Lucene qui apporte un certain nombre d'avantages :
- Les nouveaux codecs sont exposés
- Les nouveaux algorithmes de pertinences sont exposés, comme
bm25
en plus de celui basé sur leTF/IDF
(Voir Modèle probabiliste de pertinence) - La compression est activée par défaut
- Nouvel algorithme de routage des shards dans le cluster, moins naïf, il équilibre en prenant en compte l’appartenance d'un shard à un index.
- Une nouvelle API suggest
- Refactorisation des structures chargeant les champs en mémoire pour un gain en mémoire important.
- Possibilité de recalculer les scores les n top documents, permettant d'utiliser des algorithmes trop coûteux pour être appliqués à tous les documents.
- Possibilité d'aller chercher les termes d'un filtre dans un autre document d'un autre index du cluster
Sources, les release notes :
Mais surtout comme la numérotation l'indique, la prochaine release majeure sera la 1.0 qui apportera un système de sauvegarde/restauration intégré, des facettes moins coûteuses en mémoire, et je suis sûr, bien d'autres choses encore.
Qui utilise Elasticsearch ?
Voici une interview de Shay Banon où il parle (entre autres) de ses clients et de leur usage d'ES : Q&A with Shay Banon: 10 “Bonsai Cool” Things About elasticsearch
Et ci-dessous quelques détails.
foursquare
“Elasticsearch is all about scale for us. At Foursquare, we handle tens of millions of searches across 50 million locations each day. Elasticsearch returns real-time results, which encourages more usage and deeper engagement.”—Andrew Hogue, Head of Search, Foursquare
foursquare now uses Elastic Search
SoundCloud
“SoundCloud is an open platform that reaches over 180 million people, equating to 8% of the entire Internet population, every month. We connect people through sound by making it easy to discover and share audio and music once it has been created. Elasticsearch allows us to provide our engaged community with immediate, relevant results while offering us a continued path for scaling, consistency, and reliability.”—Alexander Grosse, Vice President of Engineering, SoundCloud
Architecture behind our new Search and Explore experience
kiln
“We search 40,000,000,000 (forty billion) lines of code in real-time with Elasticsearch. We haven't seen that kind of scale or performance with any other search solution.”—Kevin Gessner, Kiln Team Lead, Fog Creek Software
Kiln, powered by Elasticsearch
Github
Github est passé de Solr à Elasticsearch en début d'année : A Whole New Code Search. Ils ont eu d'ailleurs quelques problèmes : Recent Code Search Outages. On apprend dans ce second article que Github indexe environ 17 To de code source dans un cluster composé de 8 noeuds clients et de 26 noeuds de stockage, disposant chacun 2 To d'espace disque et utilisant des disques durs SSD.
SaaS
On peut noter deux entreprises qui proposent Elasticsearch comme service (Hosted) :
En vrac
Stockage principal
Comme il est possible de conserver une copie du document envoyé pour être indexé, beaucoup de personnes demandent si on peut utiliser ES comme stockage unique de ses données. Si Shay Banon ne le recommande pas, car pour lui il manque encore un système de sauvegarde/restauration intégré, il a, malgré tout, reporté avoir un client qui stocke 1 Po de donné dans un cluster.
Langage agnostique
Si ES est une grosse machinerie en Java, il est très ouvert vers les autres langages. D'abord, son API RESTfull permet de l'attaquer avec tout langage de programmation qui dispose d'un client HTTP. Ensuite aux différents niveaux où il est possible d'écrire des scripts (scripting), on a le choix entre mvel et java, par défaut ou via plug-in entre groovy, javascript et python.
Humour
Comme vous avez pu le voir au paragraphe Tester Elasticsearch/Lancer Elasticsearch, un GET à la racine du serveur vous accueille avec le slogan :
"You Know, for Search"
Les plus attentifs auront remarqué qu'un nom de node est choisi automatiquement. Celui-ci est extrait d'une liste de 2938 noms de personnage Marvel (voir la liste complète names.txt).
Aller plus loin
- Elasticsearch (133 clics)
- Elasticsearch FR (342 clics)
- L'annonce sur le blog officiel (32 clics)
# ils m ont pique mes noms de serveurs!
Posté par karmab . Évalué à -1.
ouais, mais moi, c est galactuX !
# Comparatif
Posté par Snarky . Évalué à 3.
Voici un beau petit comparatif entre Solr et ElasticSearch:
http://solr-vs-elasticsearch.com/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.