URL: https://linuxfr.org/news/sortie-d-elasticsearch-en-version-1-0 Title: Sortie d'Elasticsearch en version 1.0 Authors: Benoît Laurent NeoX, olivierweb, dadoonet, Yves Bourguignon, galactikboulay, palm123, BAud, Melkor73 et Florent Zara Date: 2014年01月19日T14:02:30+01:00 License: CC By-SA Tags: elasticsearch, logstash et kibana Score: 31 Elasticsearch est un moteur de recherche distribué, RESTful, reposant sur la bibliothèque Apache Lucene et sous licence [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.html). ![logo](http://www.elasticsearch.org/content/themes/elasticsearch-org/images/logo.png) En un an, depuis sa [sortie en version 0.90](http://linuxfr.org/news/elasticsearch-sort-en-version-0-90), sa popularité et ses fonctionnalités n'ont cessé de croître. **Note**: Si vous n'avez jamais _joué_ avec Elasticsearch, il est plus intéressant de commencer par le test. ---- [elasticsearch.org](http://www.elasticsearch.org/) [Télécharger elasticsearch](http://www.elasticsearch.org/download/) [Apache Lucene](http://lucene.apache.org/) [Sortie d'Elastic Search en version 0.19](http://linuxfr.org/news/sortie-d-elastic-search-en-version-0-19) [Elasticsearch sort en version 0.90](http://linuxfr.org/news/elasticsearch-sort-en-version-0-90) ---- # Nouveautés Après deux beta et une RC, la version une d'Elasticsearch est prête pour la production. Les principales fonctionnalités ajoutées depuis la 0.90 sont listées ci-dessous par ordre d’apparition dans les billets du blog : [Blog | Elasticsearch.org](http://www.elasticsearch.org/blog/). ## Le 6 novembre 2013, [1.0.0.Beta1 released](http://www.elasticsearch.org/blog/1-0-0-beta1-released/) ### Distributed percolation Le _percolator_ propose d'inverser la logique de recherche parmi des documents indexés. Ici ce sont les requêtes qui sont enregistrées et on leur soumet des documents. Dans la première version du percolator, toutes les requêtes étaient enregistrées dans un index système, dédié, nommé `_percolator` et composé d'un seul shard répliqué sur chaque node. Cette méthode a rapidement montré ses limites en terme de performance. La nouvelle conception permet d'enregistrer des requêtes de percolation dans n'importe quel index, et c'est maintenant un type `.percolator` qui leur est dédié. Cela permet une liberté plus grande dans la configuration et des requêtes exécutées en parallèle sur tous les shards. Tous les détails dans l'article dédié : [Redesigned percolator](http://www.elasticsearch.org/blog/percolator-redesign-blog-post/) et dans la documentation [Percolator](http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/search-percolate.html). ### Doc Values Pour certaines opérations, le faceting et le tri, Elasticsearch doit charger en mémoire toutes les valeurs d'un champ ce qui pose problème quand le nombre de valeurs uniques est très grand. Une nouvelle option, à positionner dans le mapping (c'est donc un choix à faire à l'indexation), permet de stocker la structure `fielddata` sur disque. C'est bien sûr plus lent, mais peut être très utile. Tous les détails dans l'article dédié : [Disk-based field data a.k.a. doc values](http://www.elasticsearch.org/blog/disk-based-field-data-a-k-a-doc-values/) ### Stopwords disabled by default Une des étapes classiques de traitement du texte avant indexation est la suppression des mots vides (stop words). En effet tout ces petits mots sont très fréquents et vides de sens. Pourtant ils sont parfois discriminants. Et bien il n'est plus nécessaire de les supprimer. Une nouvelle option dans les requêtes `match`, `cutoff_frequency` et un nouveau type de requête `common` permet de choisir lors de la requête la prise en compte des mots vides. Tous les détails dans l'article dédié : [Stop stopping stop words: a look at Common Terms Query](http://www.elasticsearch.org/blog/stop-stopping-stop-words-a-look-at-common-terms-query/) ## Le 2 décembre 2013, [1.0.0.Beta2 released](http://www.elasticsearch.org/blog/1-0-0-beta2-released/). ### Snapshot / Restore Avant cette version une, pour faire un backup il fallait couper le flush, trouver les chemins vers le stockage des _primary shard_ et jouer du `rsync`, sans oublier de réactiver le flush ([flush API](http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-flush.html)). L'API `_snapshot` fait donc son apparition. La bonne nouvelle c'est que les snapshots sont incrémentaux. Le stockage peut être un système de fichier local ou distant: S3, Azure ou encore HDFS. Tous les détails dans l'article dédié : [Introducing Snapshot & Restore](http://www.elasticsearch.org/blog/introducing-snapshot-restore/) ### cat API L'idée derrière l'API `cat` est très simple, il y a des jours où on est fatigué de lire du json, et puis ce n'est pas toujours facile d'en extraire des données avec les outils unix classiques. C'est donc un ensemble complet de commandes qui donnent des informations sous forme lisible pour un humain. Elles disposent toutes d'une option `help` ainsi que d'un mode bavard `v` qui ajoute les entêtes. Tous les détails dans l'article dédié : [Introducing: The cat API](http://www.elasticsearch.org/blog/introducing-cat-api/) ### Aggregations Dès le départ, les capacités d’agrégation et d'inspection des données (Slice & Dice) ont été mises en avant et de fait les _facets_ ont très certainement contribué au succès d'Elasticsearch. Malheureusement, les _facets_ étaient limitées à de simples regroupements de documents pour les compter. Et ce, sur un seul niveau. Impossible de regrouper des documents par type puis par date par exemple. Seule la _statistical facet_ permettait d'aller plus loin en effectuant des calculs sur un champs numérique. _Aggregations_ est une toute nouvelle API qui propose deux familles d'agrégateur : regroupement (Bucketing) et calculs (Metric). Ceux-ci peuvent être composés librement et imbriqués ! Je vous laisse découvrir les exemples en suivant les liens : * [Elasticsearch Aggregations Overview](http://chrissimpson.co.uk/elasticsearch-aggregations-overview.html) * [Elasticsearch's New Aggregations](https://www.found.no/foundation/elasticsearch-aggregations/) Tous les détails dans l'article dédié: _Pas encore d'article dédié_ ## Le 15 janvier 2014, [1.0.0.RC1 released](http://www.elasticsearch.org/blog/1-0-0-rc1-released/) ### Federated search Cette nouveauté apparue tout récemment dans cette RC1, sans prévenir je dirais, est marquée _experimental_. Le but est d'effectuer des requêtes (au sens large) sur plusieurs cluster depuis un nouveau type de nœud _tribe_, qui se comporte comme nœud client sur tous les clusters enregistrés. La documentation est actuellement assez brève : [tribe node](http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/modules-tribe.html) ### simple_query_string La syntaxe Query String de Lucene, accessible via les requêtes du même nom ([query string query](http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/query-dsl-query-string-query.html)) est très puissante, mais très sensible aux erreurs de syntaxe. La syntaxe _simple_query_string_ se veut plus simple, plus limité, bien sûr, mais surtout est prévue pour faire de son mieux avec les erreurs et ne surtout pas échouer. Pratique si on ne veut pas développer sa propre syntaxe ou avoir à vérifier la _query string_ en amont. La documentation : [Simple Query String Query](http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/query-dsl-simple-query-string-query.html) ## Le 3 février 2014, [0.90.11 and 1.0.0.RC2 released](http://www.elasticsearch.org/blog/0-90-11-1-0-0-rc2-released/) ### Vitesse et consommation mémoire De nombreux commits ont eu pour but d'améliorer les performances, réduire la consommation mémoire et améliorer la stabilité. Il serait trop fastidieux de les lister ici. ### Clients officiels C'est indépendant de la sortie de la version une, mais néanmoins important. Elasticsearch a maintenant un jeux de clients officiels maintenus par les développeurs d'Elasticsearch. L'objectif est que l'utilisation d'Elasticsearch soit aussi facile, efficace et homogène, quelque soit le langage choisi, pour l'instant parmi JS, Perl, PHP, Python et Ruby. Tous les détails dans l'article dédié: [Release the clients! Ruby, Python, PHP, Perl](http://www.elasticsearch.org/blog/unleash-the-clients-ruby-python-php-perl/). ### Dépôt deb et rpm Finalement pour les plus admin d'entre nous, ils ont mis en place des dépôts deb et rpm : [Announcing Deb and Rpm Repositories](http://www.elasticsearch.org/blog/apt-and-yum-repositories/) ## Le 12 février 2014, [1.0.0 Released](http://www.elasticsearch.org/blog/1-0-0-released/) _En complément quelques vidéos et des présentations issue d'une rencontre des développeurs Elasticsearch est disponible : [Meet-the-Devs Meetup in Amsterdam](http://www.elasticsearch.org/blog/meet-the-devs-meetup-in-amsterdam/)_ # Quelles limites ? Si Elasticsearch a des limites (et il en a sûrement) elles sont très élevées. Un des plus gros client semble être Fog Creek, qui indexe 100 000 dépôts de code qui représenteraient 50 milliards de lignes de code. En taille de cluster il semblerait qu'il existe au moins un cluster de 200 noeuds . # L'entreprise ## Recrutement Un an et demi après sa fondation, la société compte plus de 50 salariés. La plupart du temps les embauches sont annoncées sur le blog de la société : [elasticsearch.com - blog](http://www.elasticsearch.com/blog/) On peut remarquer dans cette liste l'embauche de [Rashid Khan](http://www.elasticsearch.com/blog/welcome-drew-rashid/), le développeur de [Kibana](http://www.elasticsearch.org/overview/kibana/) et de [Jordan Sissel](http://www.elasticsearch.com/blog/welcome-jordan-logstash/) le développeur de [Logstash](http://logstash.net/). Cela montre une forte volonté de la part d'Elaticsearch de maîtriser la croissance de la stack ELK (Elasticsearch/Logstash/Kibana) qui est devenue la figure de proue du projet. Voir cette démo : [#logstash sur irc.freenode.org](http://demo3.logstash.net/index.html#/dashboard/file/logstash.json) ou celle-ci http://demo.kibana.org/#/dashboard . Et sinon, on compte au moins un français de plus, Adrien Grand, qui est aussi _commiter_ Lucene : [welcome adrien](http://www.elasticsearch.com/blog/welcome-adrien/) . ## Modèle économique Avec deux levées de fond pour un total de 34 millions de dollars, la société n'est pas dans le besoin, mais elle doit trouver son modèle économique. Pour l'instant seules les formations et le support sont payant. Ce sont les équipes de développements qui les assurent. Un module de management et monitoring nommé [Marvel](http://www.elasticsearch.com/marvel/) arrive avec la version 1. Celui-ci est payant ou offert avec le support. (l'annonce [Introducing Elasticsearch Marvel](http://www.elasticsearch.com/blog/introducing-elasticsearch-marvel-native-monitoring-deployments/)) # Tester Elasticsearch Pouvoir tester Elasticsearch en cinq minutes sur son ordinateur reste une des forces de ce logiciel. Voici quelques étapes pour le découvrir. (Le précédent test [Tester ElasticSearch 0.90](http://linuxfr.org/news/elasticsearch-sort-en-version-0-90#toc_4)) ## Télécharger l'archive ```sh $ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.0.tar.gz $ tar xvf elasticsearch-1.0.0.tar.gz ``` ## Lancer Elasticsearch ```sh $ cd elasticsearch-1.0.0/ $ bin/elasticsearch $ curl http://127.0.0.1:9200 { "status" : 200, "name" : "Slug", "version" : { "number" : "1.0.0", "build_hash" : "a46900e9c72c0a623d71b54016357d5f94c8ea32", "build_timestamp" : "2014-02-12T16:18:34Z", "build_snapshot" : false, "lucene_version" : "4.6" }, "tagline" : "You Know, for Search" } ``` ## Indexer ```sh $ curl -s -XPOST localhost:9200/_bulk --data-binary '{"index":{"_index":"test", "_type":"entry", "_id": {"model": "T-Shirt", "color":"black", "size":"XL", "stock":10, "orders":2} {"index":{"_index": "test", "_type":"entry", "_id":2}} {"model": "T-Shirt", "color":"black", "size":"L", "stock":3, "orders": 9} {"index":{"_index": "test", "_type":"entry", "_id":3}} {"model": "T-Shirt", "color":"black", "size":"S", "stock":5, "orders":0} {"index":{"_index": "test", "_type":"entry", "_id":4}} {"model": "T-Shirt", "color":"white", "size":"L", "stock":1, "orders":1} ' ``` _C'est un exemple d'utilisation de la [Bulk API](http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/docs-bulk.html)_ ## Rechercher ```sh $ curl -XPOST http://localhost:9200/test/_search?pretty=true -d '{"query": {"match":{"size":"l"}}}' { "took" : 87, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 0.30685282, "hits" : [ { "_index" : "test", "_type" : "entry", "_id" : "2", "_score" : 0.30685282, "_source" : {"model": "T-Shirt", "color":"black", "size":"L", "stock":3, "orders": 9} }, { "_index" : "test", "_type" : "entry", "_id" : "4", "_score" : 0.30685282, "_source" : {"model": "T-Shirt", "color":"white", "size":"L", "stock":1, "orders":1} } ] } } ``` ## Agréger ```sh $ curl -XPOST http://localhost:9200/test/_search?pretty=true -d ' { "size": 0, "aggs": { "size_stock": { "terms": {"field":"size"}, "aggs": { "stock": { "sum": {"field": "stock"} }, "orders": { "sum": {"field": "orders"} } } } } }' { "took" : 11, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 4, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "size_stock" : { "buckets" : [ { "key" : "l", "doc_count" : 2, "stock" : { "value" : 4.0 }, "orders" : { "value" : 10.0 } }, { "key" : "s", "doc_count" : 1, "stock" : { "value" : 5.0 }, "orders" : { "value" : 0.0 } }, { "key" : "xl", "doc_count" : 1, "stock" : { "value" : 10.0 }, "orders" : { "value" : 2.0 } } ] } } } ``` _C'est un exemple qui aurait nécessité en version 0.90.x deux facettes_ `terms_stats`. # Qui utilise Elasticsearch ? * Allociné * [What you think about the new #AlloCine search system?](https://twitter.com/jcbedier/status/421307442954137600) * Mozilla utilise Elasticsearch depuis longtemps et dans de nombreux projets dont : * [Nouveau Mozilla Developer Network avec une recherche basé sur Elasticsearch](https://twitter.com/jezdez/status/410327871497203712) * [Developer Dashboards](https://air.mozilla.org/developer-dashboards-using-elasticsearch/) Et sûrement beaucoup d'autres, si des employés de Mozilla passent par ici. * Wikimedia : [Wikimedia moving to Elasticsearch](https://blog.wikimedia.org/2014/01/06/wikimedia-moving-to-elasticsearch/) * Wordpress : [Scaling Elasticsearch Part 1: Overview](http://gibrown.wordpress.com/2014/01/09/scaling-elasticsearch-part-1-overview/) ( [All posts tagged ElasticSearch](http://gibrown.wordpress.com/tag/elasticsearch/)) * Et beaucoup d'autres * Une section plus commerciale existe sur le site : [Case Studies](http://www.elasticsearch.org/case-studies/) Et vous, utilisez-vous Elasticsearch ?

AltStyle によって変換されたページ (->オリジナル) /