Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
elasticsearch [Le 10/08/2017, 17:15]
fabux Mise en forme lien wikipedia, Lien intra pour mise en forme pré-requis, usage mini-tuto plutot qu'apt-get ou nano, retrait liens répétés (et s'il y a un wpfr pas besoin de wp en plus).
elasticsearch [Le 25/09/2023, 14:53] (Version actuelle)
92.174.107.9 Rangement ordre
Ligne 18: Ligne 18:
 Pour réaliser ce tutoriel, mieux veut connaitre les bases de : Pour réaliser ce tutoriel, mieux veut connaitre les bases de :
   * L'​[[:​tutoriel:​comment_installer_un_paquet|installation de paquets]]   * L'​[[:​tutoriel:​comment_installer_un_paquet|installation de paquets]]
-  * La [[:​tutoriel:​comment_modifier_un_fichier|modification de fichiers]] de paramètres ainsi que les [[:​sudo|droits d'adminisration]] qui peuvent être nécessaire.+  * La [[:​tutoriel:​comment_modifier_un_fichier|modification de fichiers]] de paramètres ainsi que les [[:​sudo|droits d'administration]] qui peuvent être nécessaire.
   * L'​utilisation des [[:​services]]   * L'​utilisation des [[:​services]]
   * Le requêtage HTTP : [[http://​www.zem.fr/​curl-15-commandes-pratiques-avec-curl/​|Tutoriel FR]] ou  [[http://​www.slashroot.in/​curl-command-tutorial-linux-example-usage/​|Tutoriel EN]]   * Le requêtage HTTP : [[http://​www.zem.fr/​curl-15-commandes-pratiques-avec-curl/​|Tutoriel FR]] ou  [[http://​www.slashroot.in/​curl-command-tutorial-linux-example-usage/​|Tutoriel EN]]
Ligne 43: Ligne 43:
 En effet, si vous saisissez cette commande : En effet, si vous saisissez cette commande :
 <code bash>​sudo service elasticsearch status</​code>​ <code bash>​sudo service elasticsearch status</​code>​
-Alors vous devriez voir un **active (exited)** qui indique que la commande de lancement a été exécutée mais qu'on n'est pas sûr de l'​état du service : +Alors vous devriez voir un **active (exited)** qui indique que la commande de lancement a été exécutée mais qu'on n'est pas sûr de l'​état du service :
 <code bash>● elasticsearch.service - LSB: Starts elasticsearch <code bash>● elasticsearch.service - LSB: Starts elasticsearch
    ​Loaded:​ loaded (/​etc/​init.d/​elasticsearch;​ bad; vendor preset: enabled)    ​Loaded:​ loaded (/​etc/​init.d/​elasticsearch;​ bad; vendor preset: enabled)
Ligne 68: Ligne 68:
 <note help> FIXME A quoi servent réellement ces commandes ? <note help> FIXME A quoi servent réellement ces commandes ?
   * D'un côté la variable //​START_DAEMON//​ n'est pas utilisée dans la suite du script. Donc pourquoi forcer l'​arrêt du script si elle n'​existe pas ?   * D'un côté la variable //​START_DAEMON//​ n'est pas utilisée dans la suite du script. Donc pourquoi forcer l'​arrêt du script si elle n'​existe pas ?
-  * Ensuite, le groupe défini par la variable //ES_USER// ne semble pas avoir le droit de lancer le démon alors que l'​utilisateur référencé par la même variable lui le peut. +  * Ensuite, le groupe défini par la variable //ES_USER// ne semble pas avoir le droit de lancer le démon alors que l'​utilisateur référencé par la même variable lui le peut.
 Bizarre.</​note>​ Bizarre.</​note>​
  
Ligne 140: Ligne 140:
  
 ====Opérations de base==== ====Opérations de base====
 +<note tip>Les exemples ci-dessous utilisent la [[:​tutoriel/​console_commandes_de_base|commande]] //curl//, il est possible de l'​agrémenter de la commande [[:​json_query]],​\\
 +voire d'​installer le logiciel [[https://​insomnia.rest/​|Insomnia]](OSS)</​note>​
  
 Dans un base de données, il existe 4 opérations de base. Elles sont synthétisées sous l'​acronyme [[wpfr>​CRUD|CRUD]] : Dans un base de données, il existe 4 opérations de base. Elles sont synthétisées sous l'​acronyme [[wpfr>​CRUD|CRUD]] :
   - **C**reate : création d'une donnée   - **C**reate : création d'une donnée
-  - **D**elete : supression d'une donnée 
   - **R**ead : lecture d'une donnée   - **R**ead : lecture d'une donnée
   - **U**pdate : mise-à-jour d'une donnée   - **U**pdate : mise-à-jour d'une donnée
 +  - **D**elete : supression d'une donnée
  
 De même, le protocole [[wpfr>​Hypertext_Transfer_Protocol#​M.C3.A9thodes|HTTP]] possède, entre autres, 4 méthodes : De même, le protocole [[wpfr>​Hypertext_Transfer_Protocol#​M.C3.A9thodes|HTTP]] possède, entre autres, 4 méthodes :
-  - **G**ET : accession à une ressource 
   - **P**OST : publication d'une nouvelle ressource   - **P**OST : publication d'une nouvelle ressource
 +  - **G**ET : accession à une ressource
   - **P**UT : mise-à-jour d'une ressource existante (création si elle n'​existe pas)   - **P**UT : mise-à-jour d'une ressource existante (création si elle n'​existe pas)
   - **D**ELETE : suppression d'une donnée   - **D**ELETE : suppression d'une donnée
Ligne 155: Ligne 157:
 Dans le cadre d'​Elasticsearch,​ on peut donc faire le rapprochement : Dans le cadre d'​Elasticsearch,​ on peut donc faire le rapprochement :
   - Create ↔ POST   - Create ↔ POST
-  - Delete ↔ DELETE 
   - Read ↔ GET   - Read ↔ GET
   - Update ↔ PUT   - Update ↔ PUT
 +  - Delete ↔ DELETE
  
-===Indexation===+=== Indexation ===
  
-<note tip>​Elastic ne fait pas de différence fondamental entre "​Create ↔ POST" et "​Update ↔ PUT". Ces 2 opérations se confondent en une seule : l'​indexation.</​note>​+<note tip>​Elastic ne fait pas de différence fondamental entre "​Create ↔ POST" et "​Update ↔ PUT". Ces 2 opérations se confondent en une seule : l'​indexation.\\ 
 +Notez cependant qu'​avec POST, l'​identifiant est auto-généré,​ comme un aute-incrément de base de données, alors qu'​aver PUT, vous pouvez spécifier la valeur de l'​identifiant ((https://​stackoverflow.com/​a/​56766777)),​ ce qui peut être intéressant lors de l'​indexation d'une base relationnelle</note
 + 
 +Pour ajouter un enregistrement dans Elasticsearch,​ on peut prendre comme exemple une méthode PUT : 
 +À partir de la version 7, le //type// disparaît de l'url ((https://​www.elastic.co/​guide/​en/​elasticsearch/​reference/​7.17/​removal-of-types.html)) 
 +== avec ES version 8 == 
 +<code bash>​curl -XPUT "​http://​localhost:​9200/​movies/​_doc/​1"​ -d' 
 +
 +  "​movie":​ { 
 +    "​title":​ "The Godfather",​ 
 +    "​director":​ "​Francis Ford Coppola",​ 
 +    "​year":​ 1972 
 +  } 
 +}'</​code>
  
-Pour ajouter un enregistrement dans Elasticsearch,​ on peut prendre comme exemple un méthode PUT :+== avec ES version < 7 ==
 <code bash>​curl -XPUT "​http://​localhost:​9200/​movies/​movie/​1"​ -d' <code bash>​curl -XPUT "​http://​localhost:​9200/​movies/​movie/​1"​ -d'
 { {
Ligne 241: Ligne 256:
 ===Lecture sur un index=== ===Lecture sur un index===
  
 +<note important>​Comme déjà préciser lors du PUT, à partir d'ES v7, il n'y a plus de //type//, les requêtes GET s'en trouvent aussi modifiées</​note>​
 Maintenant que nous avons créé et modifié des enregistrements,​ il est facilement possible de les récupérer via la méthode ''​GET''​ en utilisant uniquement les IDs. Par exemple, pour récupérer notre premier film : Maintenant que nous avons créé et modifié des enregistrements,​ il est facilement possible de les récupérer via la méthode ''​GET''​ en utilisant uniquement les IDs. Par exemple, pour récupérer notre premier film :
 +== avec ES version 8 ==
 +<code bash>​curl -XGET "​http://​localhost:​9200/​movies/​_doc/​1"</​code>​
 +
 +== avec ES version < 7
 <code bash>​curl -XGET "​http://​localhost:​9200/​movies/​movie/​1"</​code>​ <code bash>​curl -XGET "​http://​localhost:​9200/​movies/​movie/​1"</​code>​
 On reçoit en réponse quelque chose de similaire à l'​indexation,​ mais : On reçoit en réponse quelque chose de similaire à l'​indexation,​ mais :
Ligne 476: Ligne 496:
     }     }
 }'</​code>​ }'</​code>​
-Ce qui va renvoyés ​2 résultats au format déjà connu :+Ce qui va renvoyer ​2 résultats au format déjà connu :
 <code bash>​{"​took":​5,"​timed_out":​false,"​_shards":​{"​total":​1,"​successful":​1,"​failed":​0},"​hits":​{"​total":​2,"​max_score":​0.36067212,"​hits":​[{"​_index":"​movies","​_type":"​movie","​_id":"​2","​_score":​0.36067212,"​_source":​ <code bash>​{"​took":​5,"​timed_out":​false,"​_shards":​{"​total":​1,"​successful":​1,"​failed":​0},"​hits":​{"​total":​2,"​max_score":​0.36067212,"​hits":​[{"​_index":"​movies","​_type":"​movie","​_id":"​2","​_score":​0.36067212,"​_source":​
 { {
Ligne 529: Ligne 549:
  
 <​note>​La différence entre query et filter est assez subtile : <​note>​La différence entre query et filter est assez subtile :
-  * **query** fait une recherche élargie : tout enregistrement ​correspond ​partiellement à la requête sera retourné. Ce genre de recherche est donc plus lent. Il est utile pour faire les recherches à partir de champs saisis par un utilisateurs.+  * **query** fait une recherche élargie : tout enregistrement ​correspondant ​partiellement à la requête sera retourné. Ce genre de recherche est donc plus lent. Il est utile pour faire les recherches à partir de champs saisis par un utilisateurs.
   * **filter** fait une recherche stricte : un document ne ressortira que s'il correspond rigoureusement à tous les critères. Ce genre de recherche est donc plus rapide. Il est utile pour rajouter des contraintes qui seront fixés par le système plus que par l'​utilisateur.   * **filter** fait une recherche stricte : un document ne ressortira que s'il correspond rigoureusement à tous les critères. Ce genre de recherche est donc plus rapide. Il est utile pour rajouter des contraintes qui seront fixés par le système plus que par l'​utilisateur.
 Il faut donc bien réfléchir à la façon dont seront faites les recherches et concevoir les requêtes les plus adaptés au contexte. Il faut donc bien réfléchir à la façon dont seront faites les recherches et concevoir les requêtes les plus adaptés au contexte.
Ligne 651: Ligne 671:
   * [[https://​www.elastic.co/​fr/​products/​elasticsearch|Site du projet]] sur [[https://​www.elastic.co/​fr|Elastic.co]]   * [[https://​www.elastic.co/​fr/​products/​elasticsearch|Site du projet]] sur [[https://​www.elastic.co/​fr|Elastic.co]]
   * [[https://​www.digitalocean.com/​community/​tutorials/​how-to-install-and-configure-elasticsearch-on-ubuntu-16-04|How to install Elasticsearch on Ubuntu 16.04]]<​sup>​(en)</​sup>​   * [[https://​www.digitalocean.com/​community/​tutorials/​how-to-install-and-configure-elasticsearch-on-ubuntu-16-04|How to install Elasticsearch on Ubuntu 16.04]]<​sup>​(en)</​sup>​
 +  * [[https://​hub.docker.com/​_/​elasticsearch]] image docker officielle
 +  * [[https://​grafikart.fr/​tutoriels/​elastic-search-626]]<​sup>​(fr)</​sup>​ tutoriel (2015… //​obsolète//​),​ 43mn
 +  * [[https://​www.editions-eni.fr/​video/​elasticsearch-indexez-vos-donnees-pour-une-recherche-efficace-vtelastic|tuto vidéo aux éditions ENI sur la v8]] (PAYANT)
   * [[http://​joelabrahamsson.com/​elasticsearch-101/​|How to install Elasticsearch]]<​sup>​(en)</​sup>​   * [[http://​joelabrahamsson.com/​elasticsearch-101/​|How to install Elasticsearch]]<​sup>​(en)</​sup>​
  
 ---- ----
-//​Contributeurs:// ​FIXME+//​Contributeurs: ​demi-boulet,​ [[:​utilisateurs/​bcag2]]//
  • elasticsearch.1502378108.txt.gz
  • Dernière modification: Le 10/08/2017, 17:15
  • par fabux