30 mars 2016 Sorties

Lancement de Elasticsearch 2.3.0 et 2.2.2

Par Clinton Gormley

Nous avons aujourd'hui le plaisir de vous annoncer le lancement de Elasticsearch 2.3.0 basé sur Lucene 5.5.0, ainsi que de la version corrigée de Elasticsearch 2.2.2 basé sur Lucene 5.4.1. Ces deux nouvelles versions sont d'ores et déjà disponibles dans Elastic Cloud, notre plateforme "Elasticsearch as a service". Les nouvelles versions de cette semaine concernent aussi Kibana, Logstash et Beats.

Dernières versions stables :

Corrections de bug pour la version 2.2 :

Elasticsearch 2.3.0 met à disposition trois des fonctionnalités les plus demandées dans l'histoire d'Elasticsearch : l'API de réindexation, l'API de mise à jour par requête (update-by-query) et l'API de gestion des tâches, ainsi que la possibilité d'obtenir des logs de dépréciation afin de vous aider à vous préparer pour Elasticsearch 5.0.

API de réindexation

Tout utilisateur ayant travaillé avec Elasticsearch pendant un certain temps sait que la capacité de réindexer ses données est capitale. Vous devez peut-être améliorer vos mappings ou vos analyseurs de texte pour obtenir de meilleurs résultats de recherche, à moins que vous ne souhaitiez réindexer des données passées pour profiter de meilleures structures de données, comme les nouvelles fonctions de géolocalisation disponibles depuis Elasticsearch 2.2.0. Quelle qu'en soit la raison, la réindexation de vos données a toujours été facile. Elle est possible depuis longtemps, grâce aux API scroll et bulk, mais la version 2.3.0 vous rend la tâche encore plus aisée.

La nouvelle API _reindex réindexe tous vos documents indexés dans un nouvel index avec une commande unique :

POST _reindex
{
  "source": {
    "index": "my_old_index"
  },
  "dest": {
    "index": "my_new_index"
  }
}
        

Les documents peuvent provenir d'un ou plusieurs index, et peuvent être restreints au sous-ensemble de documents qui correspondent à une requête. Ils peuvent être transformés au cours du processus de réindexation à l'aide d'un script, qui a même accès aux métadonnées du document, comme _id et _type.

Elasticsearch 2.3.0 comporte la première version de l'API de réindexation, mais nous prévoyons déjà d'autres améliorations à venir, comme le "throttling" dynamique (contrôle de débit), la réindexation en place, la réindexation à partir de clusters distants, et bien plus encore.

API update-by-query

L'ajout de l'API de réindexation a permis d'implémenter facilement l'API de "Update by Query". L'API update-by-query vous permet de mettre à jour tous les documents correspondant à une requête à l'aide d'un script. Elle est utile même sans script : après l'ajout d'un multi-field, il est possible de lancer une requête de mise à jour par requête vide pour remplir a posteriori les valeurs du multi-field pour tous les documents déjà indexés.

Vous trouverez davantage d'informations au sujet des API de réindexation et de "Update by Query" dans l'article Reindex is coming!.

API de gestion des tâches

La réindexation de téraoctets de données peut prendre du temps. Vous ne voudriez pas risquer de lancer une tâche de réindexation, réaliser que vous avez fait une erreur et être incapable d'annuler ! Avant de proposer la réindexation sans risques, il était essentiel de trouver un moyen de monitorer et d'annuler les tâches longues.

La nouvelle API de gestion de tâche vous permet d'intervenir sur le statut de tâches de réindexation en cours, et même de les annuler. Elle fournit des informations, non seulement sur les tâches longues, mais aussi sur toutes les tâches exécutées sur l'ensemble de votre cluster, entre autres les recherches, les requêtes d'indexation, l'attribution de shards, etc. Par la suite, nous déplacerons également d'autres tâches longues, comme la fonctionnalité "snapshot et restore" ou l'API "Delete by Query" pour exploiter au mieux la structure de gestion de tâches.

Vous trouverez davantage d'informations dans la documentation sur l'API de gestion de tâches.

Deprecation Logging

Il peut être difficile de savoir si vous utilisez des fonctionnalités obsolètes qui n'existeront plus dans la version suivante. Avec la version 2.0, nous avons fusionné les filtres et les requêtes et de fait certaines requêtes sont devenues obsolètes, comme la requête filtered et les filtres and et or, mais ces éléments ont continué à fonctionner avec les versions 2.x. Ils n'existeront plus dans la version 5.0, comme d'autres fonctionnalités déjà dépréciées.

Pour vous aider à déterminer si vous utilisez des fonctionnalités dépréciées dans votre application, activez la fonctionnalité de logging de dépréciation avec la requête de mise à jour des paramètres de cluster ci-après :

PUT _cluster/settings
{
  "transient": {
    "logger.deprecation": "DEBUG"
  }
}
        

Elasticsearch reportera toutes les utilisations de fonctionnalités dépréciées (dont nous avons connaissance) dans le fichier elasticsearch_deprecation.log du répertoire "logs". Il est possible de désactiver à nouveau le logging en re-configurant logger.deprecation sur INFO.

Conclusion

Veuillez télécharger Elasticsearch 2.3.0, testez-le et dites-nous ce que vous en pensez sur Twitter (@elastic) ou sur notre forum. Vous pouvez signaler tout problème sur la page de problèmes de GitHub.