BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Publication d'ElasticSearch 1.0.1

Publication d'ElasticSearch 1.0.1

Favoris

Elasticsearch est une boite à outils permettant de mettre en place un moteur d'indexation, de recherche et d'analytics distribué. Il est basé sur la librairie de recherche texte Apache Lucene, expose ses fonctionnalités par des APIs REST et Java et ajoute le clustering, la scalabilité, la haute disponibilité des index et la recherche distribuée. Elasticsearch est déjà utilisé par de nombreuses entreprises et est en forte croissance.

Elasticsearch met l'accent sur :

  • L'indexation et la recherche quasi-temps réel. Un document indexé sera visible dans les résultats de recherche ou d'aggrégation 1 seconde après son indexation, en gardant les réglages par défaut. Cet aspect quasi temps réel a une véritable valeur ajoutée par rapport aux systèmes d'analytics par batch.
  • La scalabilité. En plus de pouvoir utiliser pleinement les ressources d'un serveur classique, même avec un heap très large, Elasticsearch a été conçut dès le départ pour être réparti sur plusieurs serveurs, c'est la scalabilité horizontale. Les index et les recherches sont répartis, de façon à distribuer les calculs et le stockage des index. Chaque fragment d'index est appelé un shard.
  • La haute disponibilité. En plus de répartir les index en plusieurs shards, Elasticsearch va créer des copies de chaque shard, appelés des replicas et les placer sur des noeuds différents afin de pouvoir gérer la perte d'un noeud du cluster sans perte de données ou d'indisponibilité. Elasticsearch va automatiquement équilibrer les shards et les replicas entre les différents noeuds pour répartir la charge.

La version 1.0.0 a été publié le 12 février, après plus de 9 mois de travail acharné de la part des développeurs d'Elasticsearch, et une forte participation de la communauté, avec 183 contributeurs au total, puis la 1.0.1 deux semaines plus tard. Cette première version majeure apporte un nombre important de nouvelles fonctionnalités et d'améliorations, dont certaines très attendues :

  • snapshot & restore, qui expose une API permettant de prendre des instantanés de l'état des index et de les restaurer. Avant la version 1.0.0, la sauvegarde des index était une opération en plusieurs étapes manuelles, facilement automatisable mais tout de même fastidieuse. Cette nouvelle fonctionnalité permet de standardiser une opération indispensable. De plus, les snapshots sont incrémentaux et permettent donc d'économiser de l'espace de stockage.
  • Les doc values. Pour calculer des facettes ou des tris, Elasticsearch doit accéder aux valeurs des champs utilisés, et il les place dans le field data cache. Avant les doc values, le field data cache était monté en heap. Les conséquences pouvaient être de longues pauses pour le garbage collector voir des OutOfMemoryError. Les doc values permettent de stocker sur le système de ficher ces valeurs, précalculées au moment de l'indexation et de laisser le système d'exploitation gérer le cache disque. Plus d'infos disponibles sur le blog d'Elasticsearch et la doc.
  • Les circuit breaker permettent de prévenir certaines opérations qui pourraient mettre en danger la stabilité du cluster. Le premier circuit breaker estime la mémoire nécessaire pour chaque requête et peut annuler une requête trop consommatrice avant de déclencher une OutOfMemoryError. D'autres circuit breakers seront ajoutés dans le futur.
  • Le percolator distribué. Le percolator est une recherche inversée, elle consite à enregistrer des requêtes et trouver à partir d'un document quelles requêtes lui correspondent. Il est très utilisé par certaines entreprises qui enregistrent des centaines de milliers de requêtes pour créer des systèmes d'alertes. La première version du percolator n'était pas scalable puisqu'elle n'était pas répartie sur les différents noeuds du cluster, chacun avait une copie de l'ensemble des requêtes de percolation et une requête de percolation n'était traitée que sur un noeud donc un temps de traitement globalement linéaire avec le nombre de requêtes. Avec la version 1.0.0, le percolator a été ré-architecturé et est maintenant distribué, permettant de mettre à contribution toute la puissance du cluster pour gérer un grand nombre de requêtes en percolation.
  • Les aggrégations sont un remplaçant des facettes. Les facettes permettent de faire des aggrégations de données et pas simplement des recherches, on peut les comparer aux fonctions d'aggrégation du SQL. Les facettes sont une des fonctionnalités phares d'Elasticsearch, en particulier couplé à Kibana qui permet de créer rapidement des dashboards. Malgré celà, les facettes souffrent d'une limitation, elles ne peuvent pas êtres imbriquées et certains besoins ne peuvent donc pas être adressés par celles-ci. Les aggrégations sont un nouveau framework visant à remplacer et étendre les fonctionnalités des facettes, en particulier en permettant l'imbrication.
  • L'API cat permet d'avoir un format de sortie sous forme tabulaire, plus simple à lire que le JSON pour des humains, en particulier quand le volume de données affiché augmente. Un scénario expliquant plus en détails l'intérêt de cette API et comment l'utiliser est disponible sur le blog d'Elasticsearch et la documentation.
  • Le tribe node sert de pont entre plusieurs clusters Elasticsearch. Quelques fonctionnalités ne sont pas supportées comme la création d'index, mais la plupart le sont, y compris des écritures. La doc est encore assez légère et il y a aussi un article de blog.

En plus des nouvelles fonctionnalités, certaines parties de l'API et des paramètres ont été revus pour être plus simples et homogènes. Elasticsearch peut être installé à partir de zip, tar-gz des paquets deb et rpm ou par des dépôts gérés par Elasticsearch.

Des instructions de migration et des changelogs sont disponibles pour la 1.0.0 et la 1.0.1.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT