URL: https://linuxfr.org/news/elasticsearch-2-0 Title: Elasticsearch 2.0 Authors: BenoĂźt Laurent palm123, bubarđŸŠ„, BenoĂźt Sibaud et Pierre Jarillon Date: 2015ćčŽ10月27æ—„T21:44:52+01:00 License: CC By-SA Tags: elasticsearch et admin Score: 38 Elasticsearch est un moteur de recherche distribuĂ©, RESTful, reposant sur la bibliothĂšque Apache Lucene et sous licence Apache 2. Si vous ne le connaissez pas encore, vous pouvez vous reporter Ă  la prĂ©cĂ©dente dĂ©pĂȘche, [Sortie d'Elasticsearch en version 1.0](https://linuxfr.org/news/sortie-d-elasticsearch-en-version-1-0) oĂč un rapide [test](https://linuxfr.org/news/sortie-d-elasticsearch-en-version-1-0#tester-elasticsearch) est disponible. Vous pouvez aussi voir [tous les contenus taggĂ©s avec elasticsearch](https://linuxfr.org/tags/elasticsearch/public). ---- [Elasticsearch 2.0.0 GA released](https://www.elastic.co/blog/elasticsearch-2-0-0-released) [Elasticsearch: The Definitive Guide](https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html) ---- Que s'est-il passĂ© depuis la 1.0 ? ---------------------------------- ### Version Depuis le 12 fĂ©vrier 2014, 37 versions sont sorties, de la 1.0.0 Ă  la 1.7.3 . Ci-dessous les versions avec leurs principales fonctionnalitĂ©s et un lien vers leurs annonces: - 1.7 : Allocation des `shards` diffĂ©rĂ©e et priorisation de la rĂ©cupĂ©ration des index ([Elasticsearch 1.7.0 and 1.6.1 released](https://www.elastic.co/blog/elasticsearch-1-7-0-and-1-6-1-released)) - 1.6 : DĂ©marrages plus rapide avec les purges synchrones, allocation des `shards` non bloquant, filtrage de la rĂ©ponse JSON, API de mise Ă  jour des anciens index, configuration fine pour les scripts ([Elasticsearch 1.6.0 released](https://www.elastic.co/blog/elasticsearch-1-6-0-released)) - 1.5 : Nouvelles fonctionnalitĂ©s `Inner hits` et `Shadow replicas` ; amĂ©lioration de la rĂ©silience ([Elasticsearch 1.5.0 Released](https://www.elastic.co/blog/elasticsearch-1-5-0-released)) - 1.4 : AmĂ©lioration de la rĂ©silience ([Elasticsearch 1.4.0 And 1.3.5 Released](https://www.elastic.co/blog/elasticsearch-1-4-0-released)) - 1.3 : JSONP dĂ©activĂ© par dĂ©faut, Groovy comme nouveau langage de scripting par dĂ©faut, nouveaux types agrĂ©gations, etc. ([Elasticsearch 1.3.0 And 1.2.3 Released](https://www.elastic.co/blog/elasticsearch-1-3-0-released)) - 1.2 : Java 7 obligatoire, scripts dynamiques dĂ©activĂ©s par dĂ©faut, nouveau `circuit breaker` pour les `fielddata`, nouveau systĂšme de suggestion `Context Suggester` ([Elasticsearch 1.2.0 and 1.1.2 released](https://www.elastic.co/blog/elasticsearch-1-2-0-released)) - 1.1 : Meilleure recherche multi-champs, templates de recherche, nouvelles agrĂ©gations `cardinality`, `significant_terms` et `percentiles` ([Elasticsearch 1.1.0, 1.0.2 and 0.90.13 released](https://www.elastic.co/blog/elasticsearch-1-1-0-released)) ### SĂ©curitĂ© Avec les scripts dynamiques et sans authentification par dĂ©faut, une faille dans la gestion des scripts a pu ĂȘtre exploitĂ©e au printemps 2014 (et ce malgrĂ© un article [Securing Your Elasticsearch Cluster](https://www.elastic.co/blog/found-elasticsearch-security) de dĂ©cembre 2013). Un article dĂ©crivant la faille et son exploitation : [Insecure default in Elasticsearch enables remote code execution](http://bouk.co/blog/elasticsearch-rce/) À partir de la version 1.2, les configurations par dĂ©faut dans ce domaine ont Ă©tĂ© changĂ©es et la sĂ©curitĂ© est devenue prioritaire dans les dĂ©veloppements. L'article qui a suivit cette histoire : [Scripting and Security](https://www.elastic.co/blog/scripting-security) _LinuxFr.org a Ă©tĂ© touchĂ© par cette faille, voir la dĂ©pĂȘche suivante : [Quoi de neuf cĂŽtĂ© LinuxFr.org - Faille ElasticSearch sur juin/juillet 2014](https://linuxfr.org/news/quoi-de-neuf-cote-linuxfr-org#faille-elasticsearch-sur-juinjuillet-2014)_ ### RĂ©silience Le deuxiĂšme important point de travail de cette sĂ©rie 1.x est la rĂ©silience. AprĂšs avoir Ă©tĂ© _bousculĂ©_ par Aphyr sur la version 1.1, Elasticsearch a notifiĂ© dans une page de documentation tous les problĂšmes de rĂ©silience ([Elasticsearch Resiliency Status](https://www.elastic.co/guide/en/elasticsearch/resiliency/current/index.html)) _Tous les articles d'Aphyr sur [Elasticsearch](https://aphyr.com/tags/Elasticsearch)._ Les nouveautĂ©s de la 2.0 ------------------------ AprĂšs deux bĂȘta et une rc, Elasticsearch 2.0 est sorti le 28 octobre 2015: - [Elasticsearch 2.0.0 GA released](https://www.elastic.co/blog/elasticsearch-2-0-0-released) - [Elasticsearch 2.0.0-rc1 released ](https://www.elastic.co/blog/elasticsearch-2-0-0-rc1-released) - [Elasticsearch 2.0.0-beta2 released ](https://www.elastic.co/blog/elasticsearch-2-0-0-beta2-released) - [Elasticsearch 2.0.0-beta1 released ](https://www.elastic.co/blog/elasticsearch-2-0-0-beta1-released) - [Elasticsearch 2.0.0.beta1 coming soon! ](https://www.elastic.co/blog/elasticsearch-2.0.0.beta1-coming-soon) Ci-dessous, un rĂ©sumĂ© des articles du blog d'Elastic sur les nouveautĂ©s de cette version majeure. ### Refactoring des mapping Dans un mĂȘme index, il est maintenant interdit pour deux types diffĂ©rents d'avoir deux champs de mĂȘme nom mais de type diffĂ©rent. Aujourd'hui, ce genre de configuration peut donner des rĂ©sultats faux, des exceptions et mĂȘme des corruptions d'index. L'accĂšs Ă  un champ par son nom court Ă©tait ambigu, il est maintenant nĂ©cessaire d'utiliser le chemin complet. La crĂ©ation de mapping dynamique est maintenant synchrone, c'est-Ă -dire que le nouveau mapping doit ĂȘtre acceptĂ© par un `master`. Un mĂȘme champ pouvait ĂȘtre ajoutĂ© Ă  deux `shards` en mĂȘme temps mais avec deux types diffĂ©rents, ce qui conduisait Ă  une corruption d'index. Diverses simplifications dans la configuration des *analyzers* et des champs meta. Tous les dĂ©tails se trouvent dans l'article suivant [The Great Mapping Refactoring](https://www.elastic.co/blog/great-mapping-refactoring). ### Meilleure compression des index Lucene 5.0 apporte un nouveau *codec* amĂ©liorant la compression des index. Il est maintenant possible de choisir une meilleure compression avec un codec basĂ© sur DEFLATE pour par exemple un index *froid* ou de conserver le codec basĂ© sur LZ4 pour les index *chauds*. Tous les dĂ©tails sont dans l'article suivant : [Store compression in Lucene and Elasticsearch](https://www.elastic.co/blog/store-compression-in-lucene-and-elasticsearch) _La notion de *codecs* pour Lucene a dĂ©jĂ  Ă©tĂ© Ă©voquĂ©e sur le blog d'Elastic : [What is an Apache Lucene Codec?](https://www.elastic.co/blog/what-is-an-apache-lucene-codec)_ ### Meilleure exĂ©cution des requĂȘtes Des modifications dans Lucene 5.0, 5.1 et 5.2 permettent aujourd'hui d'effacer pour l'utilisateur la distinction entre *query* et *filter* et c'est Elasticsearch qui va faire les choix de mise en cache ou non des rĂ©sultats intermĂ©diaires. À l'origine, les filtres diffĂšrent des requĂȘtes par le fait qu'ils ne font pas de scoring, mais peuvent ĂȘtre mis en cache. Dans Elasticsearch 2.0 c'est maintenant le mĂȘme objet interne. L'article suivant prĂ©sente tout les dĂ©tails : [Better query execution coming to Elasticsearch 2.0](https://www.elastic.co/blog/better-query-execution-coming-elasticsearch-2-0) ### Enchainement d'agrĂ©gation Les *Pipeline Aggregations* sont une nouveautĂ© qui permet de faire des calculs sur des rĂ©sultats d'agrĂ©gations prĂ©cĂ©dentes. Il y a une petite dizaine de nouvelles agrĂ©gations de ce type que je vous laisse dĂ©couvrir en dĂ©tails dans les articles suivants : - [Out of this world aggregations](https://www.elastic.co/blog/out-of-this-world-aggregations) - [Staying in Control with Moving Averages - Part 1](https://www.elastic.co/blog/staying-in-control-with-moving-averages-part-1) - [Staying in Control with Moving Averages - Part 2](https://www.elastic.co/blog/staying-in-control-with-moving-averages-part-2) ### Delete by query L'API *Delete by Query* est dĂ©sormais fourni sous forme de greffon. La prĂ©cĂ©dente implĂ©mentation, en effectuant un `refresh` aprĂšs chaque suppression pouvait provoquer de nombreuses crĂ©ations de segments et dĂ©clencher de nombreux *merge*. De plus elle pouvait provoquer des incohĂ©rences entre rĂ©pliques. Le plugin se base lui sur l'API `scan/scroll`. Tous les dĂ©tails dans l'article [The Delete by Query API Is now a plugin](https://www.elastic.co/blog/core-delete-by-query-is-a-plugin) ### RĂ©seau Il Ă©tait trĂšs facile, certainement trop, pour des instances de dĂ©veloppement d'Elasticsearch de former un cluster. À partir de cette version 2.0 seules les instances locales (`localhost`) pourront former un cluster, avec la configuration par dĂ©faut, Autre changement cĂŽtĂ© rĂ©seau, le _multicast_, qui Ă©tait assez bancal dĂ» entre autre Ă  des diffĂ©rences de comportement entre Linux et OS X, est dĂ©sormais fourni en tant que greffon. Le dĂ©tail dans l'article suivant : [Elasticsearch unplugged - Networking changes in 2.0](https://www.elastic.co/blog/elasticsearch-unplugged) Mise Ă  jour ----------- Avant de mettre Ă  jour, pensez Ă  lire la page [Breaking changes in 2.0](https://www.elastic.co/guide/en/elasticsearch/reference/2.0/breaking-changes-2.0.html). Un plugin est mis Ă  disposition pour vĂ©rifier qu'un cluster peut ĂȘtre mis Ă  jour directement ou s'il prĂ©sente des incompatibilitĂ©s : [Elasticsearch Migration Plugin](https://github.com/elastic/elasticsearch-migration). À vos claviers !

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /