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 11/09/2022, 12:14]
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
elasticsearch [Le 07/02/2025, 11:16] (Version actuelle)
0ol
Ligne 1: Ligne 1:
-{{tag>Xenial ​console shell BROUILLON}}+{{tag>​console shell BROUILLON}}
  
 ---- ----
  
-====== Elasticsearch ======+====== ​OpenSearch/Elasticsearch ======
  
 **[[wpfr>​Elasticsearch]]** est une base de données documentaire libre se basant sur le serveur Apache [[wpfr>​Lucene]].\\ **[[wpfr>​Elasticsearch]]** est une base de données documentaire libre se basant sur le serveur Apache [[wpfr>​Lucene]].\\
 Les requêtes se font via le protocole [[wpfr>​Hypertext_Transfer_Protocol|HTTP]] et l'​interface [[wpfr>​Representational_state_transfer|REST]].La requête PUT permet d'​ajouter/​modifier une entrée tandis que GET permet de la récupérer. L'​échange de données se faisant via le format [[wpfr>​JavaScript_Object_Notation|JSON]]. Les requêtes se font via le protocole [[wpfr>​Hypertext_Transfer_Protocol|HTTP]] et l'​interface [[wpfr>​Representational_state_transfer|REST]].La requête PUT permet d'​ajouter/​modifier une entrée tandis que GET permet de la récupérer. L'​échange de données se faisant via le format [[wpfr>​JavaScript_Object_Notation|JSON]].
 +<note important>​En 2021, le changement de licence d'​Elasticsearch vers la licence non libre [[wpfr>​Server_Side_Public_License|SSPL]] a entraîné la création du fork [[wp>​OpenSearch_(software)|OpenSearch]],​ a priviligier désormais !\\ 
 +Fin août 2024, marche arrière avec l'​ajout d'une licence AGPL pour qu'​Elasticsearch soit à nouveau open source ((src: https://​www.elastic.co/​fr/​blog/​elasticsearch-is-open-source-again et https://​sgbd.developpez.com/​actu/​362095/​Elasticsearch-est-a-nouveau-open-source-en-ajoutant-l-AGPL-conforme-a-l-OSI-comme-troisieme-option-apres-trois-ans-ou-les-produits-d-Elastic-ne-possedaient-qu-une-double-licence-non-open-source/​)) 
 +</​note>​
 Ce tutoriel a pour but de montrer comment installer basiquement le service Elasticsearch et réaliser des requêtes simples. Ce tutoriel a pour but de montrer comment installer basiquement le service Elasticsearch et réaliser des requêtes simples.
 Les paramètres techniques détaillées et les concepts d'​architecture ou de modèle documentaire ne seront pas abordés ici.\\ Les paramètres techniques détaillées et les concepts d'​architecture ou de modèle documentaire ne seront pas abordés ici.\\
Ligne 140: Ligne 142:
  
 ====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) ou [[https://​docs.usebruno.com/​introduction/​what-is-bruno|Bruno]](également OSS), ce dernier offre l’avantage de permettre d'​accéder à ses requêtes et donc de les versionner et/ou de les partager</​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 159:
 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 258:
 ===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 652: Ligne 674:
   * [[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://​hub.docker.com/​_/​elasticsearch]] image docker officielle
-  * [[https://​grafikart.fr/​tutoriels/​elastic-search-626]]<​sup>​(fr)</​sup>​ tutoriel (2015), 43mn+  * [[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:​ demi-boulet//​+//​Contributeurs:​ demi-boulet, [[:​utilisateurs/​bcag2]]//
  • elasticsearch.1662891255.txt.gz
  • Dernière modification: Le 11/09/2022, 12:14
  • par moths-art