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

API 搜索 Elasticsearch

Esta API se utiliza para buscar contenido en Elasticsearch. Los usuarios pueden realizar búsquedas enviando una solicitud GET con una cadena de consulta como parámetro o publicando la consulta en el cuerpo del mensaje de la solicitud. La API de búsqueda es principalmente para múltiples índices y múltiples tipos.

Múltiples índices

Elasticsearch nos permite buscar todos los índices o algunos índices específicos que contienen documentos. Por ejemplo, si necesitamos buscar todos los documentos que contienen el nombre "central", podemos realizar la siguiente operación:

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 URI

Se pueden pasar muchos parámetros en la operación de búsqueda utilizando identificadores de recursos uniformes-

Número de serieParámetros y descripciones
1

Q

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

2

lenient

Este parámetro se utiliza para especificar la cadena de consulta. Si se establece este parámetro en true, se pueden ignorar los errores basados en Formatbased. Por defecto es falso.

3

fields

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

4

sort

Podemos usar este parámetro para obtener los resultados de clasificación, los posibles valores de este parámetro son fieldName, fieldName:asc/ fieldName:desc

5

timeout

Podemos usar este parámetro para limitar el tiempo de búsqueda y la respuesta solo contiene coincidencias dentro del tiempo especificado. Sin timeout por defecto.

6

terminate_after

Podemos limitar la respuesta a la cantidad especificada de documentos por fragmento, y la consulta finalizará anticipadamente cuando se alcance el fragmento. Sin "terminate_after" por defecto.

7

from

Índice de inicio de la cantidad de coincidencias a devolver. El valor predeterminado es 0.

8

size

Representa la cantidad de coincidencias a devolver, el valor predeterminado es10.

Búsqueda de cuerpo de solicitud

Además, podemos usar DSL de consulta en el cuerpo de la solicitud para especificar la consulta, y se han proporcionado muchos ejemplos en capítulos anteriores. Aquí hay un ejemplo de este tipo-

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" : [
                  "completamente automatizado"
               ],
               "rating" : "4.5"
            }
         }
      ]
   }
}