Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Buscar datos en Amazon OpenSearch Service
Existen varios métodos habituales de búsqueda de documentos en Amazon OpenSearch Service, incluidas las búsquedas de URI y las búsquedas de cuerpos de la solicitud. OpenSearch Service ofrece funcionalidad adicional que mejora la experiencia de búsqueda, como paquetes personalizados, compatibilidad con SQL y búsqueda asincrónica. Para ver una referencia de la API de búsqueda de OpenSearch completa, consulte la documentación de OpenSearch
nota
Las siguientes solicitudes de muestra funcionan con las API de OpenSearch. Algunas solicitudes podrían no funcionar con versiones anteriores de Elasticsearch.
Temas
- Búsquedas de URI
- Búsquedas de cuerpo de la solicitud
- Paginar los resultados de búsqueda
- Lenguaje de consulta de paneles
- Paquetes personalizados para Amazon OpenSearch Service
- Consultar los datos de Amazon OpenSearch Service con SQL
- Búsqueda k-Nearest Neighbor (k-NN) en Amazon OpenSearch Service
- Búsqueda en clústeres de Amazon OpenSearch Service
- Aprender a clasificar para Amazon OpenSearch Service
- Búsqueda asíncrona en Amazon OpenSearch Service
- Búsqueda de punto en el tiempo en Amazon OpenSearch Service
- Búsqueda semántica en Amazon OpenSearch Service
- Búsqueda de segmentos simultánea en Amazon OpenSearch Service
- Generación de consultas en lenguaje natural con OpenSearch
Búsquedas de URI
Las búsquedas de identificador de recursos universal (URI) son la forma más sencilla de búsqueda. En una búsqueda de URI, hay que especificar la consulta como un parámetro de solicitud HTTP:
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/_search?q=house
Una respuesta de muestra tendría el siguiente aspecto:
{
"took": 25,
"timed_out": false,
"_shards": {
"total": 10,
"successful": 10,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 85,
"relation": "eq",
},
"max_score": 6.6137657,
"hits": [
{
"_index": "movies",
"_type": "movie",
"_id": "tt0077975",
"_score": 6.6137657,
"_source": {
"directors": [
"John Landis"
],
"release_date": "1978-07-27T00:00:00Z",
"rating": 7.5,
"genres": [
"Comedy",
"Romance"
],
"image_url": "http://ia.media-imdb.com/images/M/MV5BMTY2OTQxNTc1OF5BMl5BanBnXkFtZTYwNjA3NjI5._V1_SX400_.jpg",
"plot": "At a 1962 College, Dean Vernon Wormer is determined to expel the entire Delta Tau Chi Fraternity, but those troublemakers have other plans for him.",
"title": "Animal House",
"rank": 527,
"running_time_secs": 6540,
"actors": [
"John Belushi",
"Karen Allen",
"Tom Hulce"
],
"year": 1978,
"id": "tt0077975"
}
},
...
]
}
}
De forma predeterminada, esta consulta realiza búsquedas en todos los campos de todos los índices para encontrar el término house. Para aportar más precisión a la búsqueda, especifique un índice (movies
) y un campo de documento (title
) en el URI:
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search?q=title:house
Puede incluir parámetros adicionales en la solicitud, pero los parámetros compatibles proporcionan solo un pequeño subconjunto de opciones de búsqueda de OpenSearch. La siguiente solicitud devuelve 20 resultados (en vez de los 10 predeterminados) y los clasifica por año (en vez de clasificarlos por _score
):
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc
Búsquedas de cuerpo de la solicitud
A fin de realizar búsquedas más complejas, utilice el cuerpo de la solicitud HTTP y el lenguaje específico de dominio (DSL) de OpenSearch para realizar las consultas. El DSL de la consulta permite especificar la gama completa de opciones de búsqueda de OpenSearch.
nota
No puede incluir caracteres especiales Unicode en el valor de un campo de texto, o el valor se analizará como varios valores separados por el carácter especial. Este análisis incorrecto puede provocar un filtrado involuntario de los documentos y comprometer potencialmente el control sobre su acceso. Para más información, consulte A note on Unicode special characters in text fields
La siguiente consulta de match
es similar al ejemplo de búsqueda de URI final:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "sort": { "year": { "order": "desc" } }, "query": { "query_string": { "default_field": "title", "query": "house" } } }
nota
La API de _search
acepta GET
y POST
HTTP para búsquedas del cuerpo de la solicitud, pero no todos los clientes HTTP admiten la adición de un cuerpo de la solicitud a una solicitud GET
. POST
es la opción más universal.
En muchos casos, es posible que desee buscar varios campos, pero no todos los campos. Utilice la consulta multi_match
:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title", "plot", "actors", "directors"] } } }
Potenciar campos
Puede mejorar la relevancia de la búsqueda mediante la “potenciación” de ciertos campos. Los potenciadores son multiplicadores que dan mayor peso a las coincidencias en un campo que a las de otros campos. En el siguiente ejemplo, una coincidencia de john en el campo title
tiene el doble de peso en _score
que una coincidencia en el campo plot
y cuatro veces más que otra en los campos actors
o directors
. El resultado es que películas como John Wick y John Carter están cerca de los primeros resultados de búsqueda y las películas protagonizadas por John Travolta están casi al final.
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "john", "fields": ["title^4", "plot^2", "actors", "directors"] } } }
Resaltado de resultados de búsqueda
La opción highlight
indica a OpenSearch que devuelva un objeto adicional dentro de la matriz hits
si la consulta coincide con uno o más campos:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} } } }
Si la consulta coincide con el contenido del campo plot
, un acierto podría tener el siguiente aspecto:
{
"_index": "movies",
"_type": "movie",
"_id": "tt0091541",
"_score": 11.276199,
"_source": {
"directors": [
"Richard Benjamin"
],
"release_date": "1986-03-26T00:00:00Z",
"rating": 6,
"genres": [
"Comedy",
"Music"
],
"image_url": "http://ia.media-imdb.com/images/M/MV5BMTIzODEzODE2OF5BMl5BanBnXkFtZTcwNjQ3ODcyMQ@@._V1_SX400_.jpg",
"plot": "A young couple struggles to repair a hopelessly dilapidated house.",
"title": "The Money Pit",
"rank": 4095,
"running_time_secs": 5460,
"actors": [
"Tom Hanks",
"Shelley Long",
"Alexander Godunov"
],
"year": 1986,
"id": "tt0091541"
},
"highlight": {
"plot": [
"A young couple struggles to repair a hopelessly dilapidated <em>house</em>."
]
}
}
De forma predeterminada, OpenSearch incluye la cadena coincidente entre etiquetas <em>
, proporciona hasta 100 caracteres de contexto en torno a la coincidencia y desglosa el contenido en frases mediante la identificación de signos de puntuación, espacios, tabulaciones y saltos de línea. Todas estas configuraciones son personalizables:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} }, "pre_tags": "<strong>", "post_tags": "</strong>", "fragment_size": 200, "boundary_chars": ".,!? " } }
API de recuento
Si no está interesado en el contenido de sus documentos y solo quiere saber el número de coincidencias, puede utilizar la API de _count
en lugar de la API de _search
. En la siguiente solicitud, se utiliza la consulta query_string
para identificar comedias románticas:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_count { "query": { "query_string": { "default_field": "genres", "query": "romance AND comedy" } } }
Una respuesta de muestra tendría el siguiente aspecto:
{
"count": 564,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
}
}
Paginar los resultados de búsqueda
Si necesita mostrar un gran número de resultados de búsqueda, puede implementar la paginación usando varios métodos diferentes.
Punto en el tiempo
La característica de punto en el tiempo (PIT) es un tipo de búsqueda que permite ejecutar diferentes consultas en un conjunto de datos fijo en el tiempo. Este es el método de paginación preferido en OpenSearch, especialmente para la paginación profunda. Puede usar PIT con la versión 2.5 y versiones posteriores de OpenSearch Service. Para más información sobre PIT, consulte Búsqueda de punto en el tiempo en Amazon OpenSearch Service.
Los parámetros from
y size
La forma más sencilla de paginar es con los parámetros from
y size
. La siguiente solicitud devuelve los resultados 20-39 de la lista de resultados de búsqueda indexada a cero:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search { "from": 20, "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } } }
Para ver más información sobre la paginación de búsquedas, consulte Paginar resultados
Lenguaje de consulta de paneles
Puede utilizar el Lenguaje de consulta de paneles (DQL)
Consulta de términos
Una consulta de términos requiere que se especifique el término que se busca.
Para llevar a cabo una consulta de términos, ingrese lo siguiente:
host:www.example.com
Consulta booleana
Puede utilizar los operadores booleanos AND
, or
y not
para combinar varias consultas.
Para llevar a cabo una consulta booleana, pegue lo siguiente:
host.keyword:www.example.com and response.keyword:200
Consulta de fecha e intervalo
Puede utilizar una consulta de fecha e intervalo para buscar una fecha anterior o posterior a la consulta.
-
>
indica una búsqueda de una fecha posterior a la fecha especificada. -
<
indica una búsqueda de una fecha anterior a la fecha especificada.
@timestamp > "2020-12-14T09:35:33"
Consulta de campo anidada
Si tiene un documento con campos anidados, debe especificar qué partes del documento desea recuperar. A continuación, se muestra un documento de muestra con campos anidados:
{"NBA players":[ {"player-name": "Lebron James", "player-position": "Power forward", "points-per-game": "30.3" }, {"player-name": "Kevin Durant", "player-position": "Power forward", "points-per-game": "27.1" }, {"player-name": "Anthony Davis", "player-position": "Power forward", "points-per-game": "23.2" }, {"player-name": "Giannis Antetokounmpo", "player-position": "Power forward", "points-per-game":"29.9" } ] }
Para recuperar un campo específico con DQL, pegue lo siguiente:
NBA players: {player-name: Lebron James}
Para recuperar varios objetos del documento anidado, pegue lo siguiente:
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo}
Para buscar dentro de un intervalo, pegue lo siguiente:
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo and < 30}
Si el documento tiene un objeto anidado dentro de otro objeto, aún puede recuperar datos especificando todos los niveles. Para ello, pegue lo siguiente:
Top-Power-forwards.NBA players: {player-name:Lebron James}