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