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

约定 API Elasticsearch

L'interface de programmation des applications Web (API) est un ensemble de fonctions d'appel ou d'autres instructions de programmation utilisées pour accéder aux composants logiciels spécifiques d'une application Web spécifique. Par exemple, l'API de Facebook aide les développeurs à créer des applications en accédant aux données provenant de Facebook ou à d'autres fonctionnalités, telles que la date de naissance ou la mise à jour de l'état.

Elasticsearch fournit une API REST, qui peut être accédée via HTTP. Elasticsearch utilise certaines conventions que nous allons discuter maintenant.

Plusieurs indices

La plupart des opérations de l'API, principalement les recherches et d'autres opérations, sont destinées à un ou plusieurs indices. Cela aide les utilisateurs à effectuer une seule requête pour rechercher à plusieurs endroits ou sur toutes les données disponibles. De nombreux symboles différents sont utilisés pour effectuer des opérations sur plusieurs indices. Nous en discuterons quelques-uns dans ce chapitre.

Les symboles séparés par des virgules

POST /index1,index2,index3/_search

正文请求

{
   "query":{
      
         "query":"any_string"
      }
   }
}

响应

provenant de index1, index2, index3Les objets JSON contiennent any_string.

_all Les mots-clés de tous les indices

POST /_all/_search

正文请求

{
   "query":{
      
         "query":"any_string"
      }
   }
}

响应

Des objets JSON provenant de tous les indices, qui contiennent any_string.

Les caractères génériques (*,+,–)

POST /*/_search

正文请求

{
   "query":{
      
         
      }
   }
}

响应

Les objets JSON provenant de tous les indices qui commencent par une école contenant CBSE.

De plus, vous pouvez également utiliser le code suivant-

POST /*,-schools_gov /_search

正文请求

{
   "query":{
      
         
      }
   }
}

响应

L'objet JSON provient de tous les indices commençant par "school", mais pas de "school_gov" et contient des indices avec CBSE.

Il reste encore des paramètres de chaîne de requête URL-

  • ignore_unavailable−Si l'URL index(es) ne contient pas un ou plusieurs, il ne se produira pas d'erreur ou toute opération sera arrêtée. Par exemple, l'index school existe, mais book_shops n'existe pas.

POST /*/_search

正文请求

{
   "query":{
      
         
      }
   }
}

正文请求

{
   
      
         
         
         
      }],
      
      
      
   404
}

Considérez le code suivant-

POST /*/

正文请求

{
   "query":{
      
         
      }
   }
}

Réponse (sans erreur)

Les objets JSON provenant de tous les indices qui commencent par une école contenant CBSE.

allow_no_indices

trueSi l'URL avec joker ne contient pas d'index, la valeur de ce paramètre empêchera les erreurs. Par exemple, il n'y a pas d'index commençant par schools_pri-

POST /schools_pri*/

正文请求

{
   "query":{
      "match_all":{}
   }
}

Réponse (sans erreur)

{
   1
   
}

expand_wildcards

Ce paramètre détermine si le joker doit être étendu à un index ouvert ou fermé, ou si les deux opérations doivent être exécutées simultanément. La valeur de ce paramètre peut être ouverte, fermée ou non définie.

Par exemple, fermer l'index de l'école-

POST /schools/

响应

Considérez le code suivant-

POST /*/

正文请求

{
   "query":{
      "match_all":{}
   }
}

响应

{
   
      
         
      }],
      
   }403
}

Le support de la mathématique de la date dans le nom de l'index

Elasticsearch offre la fonction de recherche d'index en fonction de la date et de l'heure. Nous devons spécifier la date et l'heure dans un format spécifique. Par exemple, accountdetail-2015.12.30, l'index stockera2015année12mois30 jour, les détails du compte bancaire peuvent être exécutés. Vous pouvez effectuer des opérations mathématiques pour obtenir des détails spécifiques à une date ou à une plage de dates et heures.

format du nom d'index mathématique de la date-

<static_name{expression_mathématique{format_date| fuseau_horaire}}>
/<accountdetail-{now-2d{YYYY.MM.dd|utc}}>/_search

static_name fait partie de l'expression et reste inchangé dans chaque index mathématique de date (comme les détails du client). date_math_expr contient une expression mathématique, qui ressemble à now-2d est déterminé dynamiquement comme pour d. date_format contient le format dans lequel la date est écrite dans l'index, comme YYYY.MM.dd. Si aujourd'hui est2015année12mois30 jour, alors<accountdetail- {now-2d {YYYY.MM.dd}}>retournera accountdetail-2015.12.28。

expressionest interprété comme
<accountdetail-{now-d}>accountdetail-2015.12.29
<accountdetail-{now-M}>accountdetail-2015.11.30
<accountdetail-{now{YYYY.MM}}>accountdetail-2015.12

Maintenant, nous allons voir quelques options couramment utilisées dans Elasticsearch, qui peuvent être utilisées pour obtenir des réponses dans un format spécifique.

Résultat amélioré

Nous pouvons obtenir une réponse bien formatée en ajoutant des paramètres de requête URL (c'est-à-dire pretty = true).

POST /schools/_search?pretty = true

正文请求

{
   "query":{
      "match_all":{}
   }
}

响应

……………………..
{
   "_index" : "schools", "_type" : "school", "_id" : "1", "_score" : 1.0,
   "_source":{
      "name":"Central School", "description":"CBSE Affiliation",
      "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115",
      "location": [31.8955385, 76.8380405], "fees":2000,
      "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5"
   }
}
………………….

Sortie lisible par l'homme

Cette option permet de modifier la forme de la statistique de réponse en format lisible par l'homme (si human = true) ou en format lisible par l'ordinateur (si human = false). Par exemple, si human = true, alors distance_kilometer = 20KM;如果human = false,则distance_meter = 20000,此时需要其他计算机程序使用响应。

过滤响应

通过将它们添加到field_path参数中,我们可以过滤对较少字段的响应。例如,

POST /schools/_search?filter_path = hits.total

正文请求

{
   "query":{
      "match_all":{}
   }
}

响应

{"hits":{"total":3}}