Elasticsearch: API de búsqueda

Esta API se utiliza para buscar contenido en Elasticsearch. Un usuario puede buscar enviando una solicitud de obtención con una cadena de consulta como parámetro o puede publicar una consulta en el cuerpo del mensaje de la solicitud de publicación. Básicamente, todos los APIS de búsqueda son de múltiples índices y múltiples tipos.

Multi-índice

Elasticsearch nos permite buscar los documentos presentes en todos los índices o en algunos índices específicos. Por ejemplo, si necesitamos buscar todos los documentos con un nombre que contenga central, podemos hacer lo que se muestra aquí -

GET /_all/_search?q=city:paprola

Al ejecutar el código anterior, obtenemos la siguiente respuesta:

{
   "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"
            }
         }
      ]
   }
}

Búsqueda de URI

Se pueden pasar muchos parámetros en una operación de búsqueda utilizando el identificador uniforme de recursos:

S. No Descripción de parámetros
1

Q

Este parámetro se utiliza para especificar la cadena de consulta.

2

lenient

Este parámetro se usa para especificar la cadena de consulta. Los errores basados ​​en formato se pueden ignorar simplemente estableciendo este parámetro en verdadero. Es falso por defecto.

3

fields

Este parámetro se utiliza para especificar la cadena de consulta.

4

sort

Podemos obtener un resultado ordenado usando este parámetro, los valores posibles para este parámetro son fieldName, fieldName: asc / fieldname: desc

5

timeout

Podemos restringir el tiempo de búsqueda usando este parámetro y la respuesta solo contiene los hits en ese tiempo especificado. De forma predeterminada, no hay tiempo de espera.

6

terminate_after

Podemos restringir la respuesta a un número específico de documentos para cada fragmento, una vez alcanzado, la consulta terminará antes. De forma predeterminada, no hay terminate_after.

7

from

El índice inicial de los hits que se van a devolver. El valor predeterminado es 0.

8

size

Denota el número de hits que se devolverán. El valor predeterminado es 10.

Solicitar búsqueda de cuerpo

También podemos especificar la consulta usando la consulta DSL en el cuerpo de la solicitud y ya se han dado muchos ejemplos en capítulos anteriores. Aquí se da un ejemplo:

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

Al ejecutar el código anterior, obtenemos la siguiente respuesta:

{
   "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"
            }
         }
      ]
   }
}