English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

API de documentation d'Elasticsearch

Elasticsearch propose des API pour un document unique et des API pour plusieurs documents, où les appels API visent respectivement un document unique et plusieurs documents.

API d'indexation

Lorsque vous effectuez une requête pour un index correspondant à une carte spécifique, cela aide à ajouter ou à mettre à jour un document JSON dans l'index. Par exemple, la requête suivante ajoutera un objet JSON à l'index 'école' et à la carte 'école'-

PUT schools/_doc/5
{
   nom":"City School", "description":"ICSE", "rue":"West End",
   "ville":"Meerut",
   "état":"UP", "code postal":"250002, "location":[28.9926174, 77.692485],
   "fees":3500,
   "tags":["complètement informatisé"], "rating":"4.5"
}

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "5",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 2,
   "_primary_term" : 1
}

Création automatique d'index

Lorsque la requête ajoute un objet JSON à un index spécifique, si cet index n'existe pas, cette API crée automatiquement cet index et la carte de base de cet objet JSON spécifique. Vous pouvez désactiver cette fonction en changeant la valeur du paramètre suivant existant dans le fichier elasticsearch.yml en false.

action.auto_create_index:false
index.mapper.dynamic:false

Vous pouvez également limiter la création automatique des indices en modifiant la valeur des paramètres suivants, en autorisant uniquement l'utilisation des noms d'indices comportant des motifs spécifiques-

action.auto_create_index:+compte*,-banque*

Attention:ici + représente l'autorisation, tandis que – signifie interdit.

Contrôle de version

Elasticsearch propose également des outils de contrôle de version. Nous pouvons utiliser les paramètres de recherche de version pour spécifier la version spécifique d'un document.

PUT schools/_doc/5?version=7&version_type=external
{
   "name":"Central School", "description":"CBSE Affiliation", "street":"Nagan",
   "city":"paprola", "state":"HP", "zip":"176115, "location":[31.8955385, 76.8380405],
   "fees":2200, "tags":["Senior Secondary", "beautiful campus"], "rating":"3.3"
}

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "5",
   "_version" : 7,
   "result" : "updated",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 3,
   "_primary_term" : 1
}

Le contrôle de version est un processus en temps réel, non affecté par les opérations de recherche en temps réel.

Il y a deux types de contrôle de version les plus importants-

Contrôle de version interne

Le contrôle de version interne est le type par défaut, à partir de1Commence par et augmente avec chaque mise à jour (y compris la suppression).

Contrôle de version externe

Lorsque le contrôle de version du document est stocké dans un système externe (comme un système de contrôle de version tiers), cette fonction est utilisée. Pour activer cette fonction, nous devons définir version_type sur external. Ici, Elasticsearch stockera le numéro de version spécifié par le système externe et ne le++era pas automatiquement.

Type d'opération

Le type d'opération est utilisé pour exécuter des opérations de création强制性。Cela aide à éviter de couvrir les documents existants.

PUT chapter/_doc/1?op_type=create
{
   "Text":"this is chapter one"
}

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "chapter"
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

Génération automatique d'ID

Si l'ID n'est pas spécifié dans l'opération d'index, Elasticsearch génère automatiquement un ID pour le document.

POST chapter/_doc/
{
   "user" : "tpoint"
   "post_date" : ""2018-12-25T14:12:12",
   "message" : "Elasticsearch Tutorial"
}

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "chapter"
   "_type" : "_doc",
   "_id" : "PVghWGoB"7LiDTeV6LSGu",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 1,
   "_primary_term" : 1
}

Obtenir l'API

L'API aide à extraire les objets JSON de type spécifique en exécutant une requête get sur un document spécifique.

pre class="prettyprint notranslate" > GET schools/_doc/5

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "5",
   "_version" : 7,
   "_seq_no" : 3,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "nom" : "École Centrale",
      "description" : "Affiliation CBSE",
      "rue" : "Nagan",
      "ville" : "paprola",
      "état" : "HP",
      "code postal" : ""176115",
      "emplacement" : [
         31.8955385,
         76.8380405
      ],
      "frais" : " 2200,
      "tags" : [
         "Secondaire Supérieur",
         "beau campus"
      ],
      "rating" : ""3.3"
   }
}
  • Cette opération est en temps réel et n'est pas affectée par le taux de rafraîchissement de l'index.

  • Vous pouvez également spécifier la version, puis Elasticsearch ne récupérera que la version du document.

  • Vous pouvez également spécifier _all dans la requête afin que Elasticsearch puisse rechercher l'ID du document pour chaque type, il retournera le premier document correspondant.

  • Vous pouvez également spécifier les champs nécessaires dans les résultats de documents spécifiques.

GET schools/_doc/5?_source_includes=name,fees

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "5",
   "_version" : 7,
   "_seq_no" : 3,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "frais" : " 2200,
      "nom" : "École Centrale"
   }
}

Vous pouvez également obtenir la partie source des résultats en ajoutant la partie _source à la requête get.

GET schools/_doc/5?_source

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "5",
   "_version" : 7,
   "_seq_no" : 3,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "nom" : "École Centrale",
      "description" : "Affiliation CBSE",
      "rue" : "Nagan",
      "ville" : "paprola",
      "état" : "HP",
      "code postal" : ""176115",
      "emplacement" : [
         31.8955385,
         76.8380405
      ],
      "frais" : " 2200,
      "tags" : [
         "Secondaire Supérieur",
         "beau campus"
      ],
      "rating" : ""3.3"
   }
}

Vous pouvez également rafraîchir les shards en définissant le paramètre refresh sur true avant d'exécuter l'opération get.

API de suppression

Vous pouvez supprimer une index spécifique, une carte ou un document en envoyant une requête HTTP DELETE à Elasticsearch.

DELETE schools/_doc/4

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "found":true, "_index":"schools", "_type":"school", "_id":"4, "_version":2,
   "_shards":{"total":2, "successful":1, "failed":0}
}

Vous pouvez spécifier la version du document pour supprimer cette version spécifique. Vous pouvez spécifier les paramètres de route pour supprimer le document d'un utilisateur spécifique, et si le document n'appartient pas à cet utilisateur spécifique, l'opération échouera. Dans cette opération, vous pouvez spécifier les options de rafraîchissement et d'expiration comme pour GET API.

Mise à jour API

Ce script est utilisé pour exécuter cette opération, le contrôle de version est utilisé pour s'assurer qu'aucune mise à jour n'a eu lieu pendant la récupération et la réédition de l'index. Par exemple, vous pouvez utiliser le script pour mettre à jour les frais de scolarité-

POST schools/_update/4
{
   "script" : {
      "source": "ctx._source.name = params.sname",
      "lang": "painless",
      "params" : {
         "sname" : "Ville École"
      }
   }
 }

Lors de l'exécution du code ci-dessus, nous obtenons les résultats suivants-

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "4",
   "_version" : 3,
   "result" : "updated",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 4,
   "_primary_term" : 2
}

Vous pouvez vérifier les mises à jour en envoyant une requête de récupération vers le document mis à jour.