Elasticsearch - API de recherche

Cette API est utilisée pour rechercher du contenu dans Elasticsearch. Un utilisateur peut effectuer une recherche en envoyant une demande d'obtention avec une chaîne de requête comme paramètre ou il peut publier une requête dans le corps du message de la demande de publication. Principalement tous les APIS de recherche sont multi-index, multi-types.

Multi-index

Elasticsearch nous permet de rechercher les documents présents dans tous les index ou dans certains index spécifiques. Par exemple, si nous devons rechercher tous les documents avec un nom qui contient central, nous pouvons faire comme indiqué ici -

GET /_all/_search?q=city:paprola

En exécutant le 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 passés dans une opération de recherche à l'aide de l'identificateur de ressource uniforme -

S. Non Paramètre et description
1

Q

Ce paramètre est utilisé pour spécifier la chaîne de requête.

2

lenient

Ce paramètre est utilisé pour spécifier la chaîne de requête. Les erreurs basées sur le format peuvent être ignorées en définissant simplement ce paramètre sur true. C'est faux par défaut.

3

fields

Ce paramètre est utilisé pour spécifier la chaîne de requête.

4

sort

Nous pouvons obtenir un résultat trié en utilisant ce paramètre, les valeurs possibles pour ce paramètre sont fieldName, fieldName: asc / fieldname: desc

5

timeout

Nous pouvons restreindre le temps de recherche en utilisant ce paramètre et la réponse ne contient que les résultats dans ce temps spécifié. Par défaut, il n'y a pas de délai.

6

terminate_after

Nous pouvons limiter la réponse à un nombre spécifié de documents pour chaque partition, lorsque la requête se terminera prématurément. Par défaut, il n'y a pas de terminate_after.

sept

from

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

8

size

Il indique le nombre de hits à renvoyer. La valeur par défaut est 10.

Demander une recherche corporelle

Nous pouvons également spécifier une requête en utilisant la requête DSL dans le corps de la requête et de nombreux exemples sont déjà donnés dans les chapitres précédents. Un tel exemple est donné ici -

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

En exécutant le 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"
            }
         }
      ]
   }
}