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

Elasticsearch 搜索API

Cette API est utilisée pour rechercher du contenu dans Elasticsearch. Les utilisateurs peuvent rechercher en envoyant une requête GET avec une chaîne de recherche en tant que paramètre, ou publier une requête en publiant le texte du message de la requête. L'API de recherche est principalement utilisée pour plusieurs index et plusieurs types.

Multi-index

Elasticsearch nous permet de rechercher tous les documents existants dans toutes les index ou certains index spécifiques. Par exemple, si nous devons rechercher tous les documents dont le nom contient 'central', nous pouvons effectuer l'opération suivante :

GET /_all/_search?q=city:paprola

Lors de l'exécution du code ci-dessus, nous obtenons la réponse suivante-

{
   "took": 33,
   "timed_out": false,
   "_shards": {
      "total": 7,
      "successful": 7,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      },
      "max_score": 0.9808292,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": ""5",
            "_score": 0.9808292,
            "_source" : {"
               "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"
            }
         }
      ]
   }
}

Recherche URI

De nombreux paramètres peuvent être transmis dans les opérations de recherche à l'aide d'un identificateur de ressource uniforme-

NuméroParamètres et descriptions
1

Q

Ce paramètre est utilisé pour spécifier la chaîne de recherche

2

lenient

Ce paramètre est utilisé pour spécifier la chaîne de recherche. Si ce paramètre est défini sur true, les erreurs basées sur Formatbased peuvent être ignorées. Par défaut, il est faux.

3

fields

Ce paramètre est utilisé pour spécifier la chaîne de recherche

4

sort

Nous pouvons utiliser ce paramètre pour obtenir le résultat de tri, les valeurs possibles étant fieldName, fieldName:asc/ fieldName:desc

5

timeout

Nous pouvons utiliser ce paramètre pour limiter le temps de recherche, et la réponse ne contient que les hits spécifiés dans le temps. Par défaut, il n'y a pas de délai d'attente

6

terminate_after

Nous pouvons limiter la réponse aux documents d'un nombre spécifié de fragments, et la recherche est interrompue prématurément lorsque le fragment atteint. Par défaut, il n'y a pas de termin_after.

7

from

L'index de départ du nombre de hits à renvoyer. La valeur par défaut est 0.

8

size

Il représente le nombre de hits à renvoyer, la valeur par défaut étant10.

Recherche dans le corps de la requête

Nous pouvons également utiliser le DSL de requête dans le corps de la requête pour spécifier la recherche, et de nombreux exemples ont été fournis dans les chapitres précédents. Voici un tel exemple-

POST /schools/_search
{
   "query": {
      "query_string": {
         "query": "up"
      }
   }
}

Lors de l'exécution du code ci-dessus, nous obtenons la réponse suivante-

{
   "took": 11,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      },
      "max_score": 0.47000363,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": ""4",
            "_score": 0.47000363,
            "_source" : {"
               "name" : "City Best School",
               "description" : "ICSE",
               "street" : "West End",
               "city" : "Meerut",
               "state" : "UP",
               "zip" : "250002",
               "location" : [
                  28.9926174,
                  77.692485
               ],
               "fees" : 3500,
               "tags" : [
                  "fully computerized"
               ],
               "rating" : "4.5"
            }
         }
      ]
   }
}