Búsqueda de datos en Amazon OpenSearch Service - OpenSearch Servicio Amazon

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.

Búsqueda de datos en Amazon OpenSearch Service

Existen varios métodos comunes para buscar documentos en Amazon OpenSearch Service, incluidas las búsquedas de URI y los registros corporales de las solicitudes. OpenSearch El servicio ofrece funciones adicionales que mejoran la experiencia de búsqueda, como paquetes personalizados, compatibilidad con SQL y búsqueda asíncrona. Para obtener una referencia completa sobre la API de OpenSearch búsqueda, consulta la documentación. OpenSearch

nota

Los siguientes ejemplos de solicitudes funcionan con OpenSearch las API. Algunas solicitudes podrían no funcionar con versiones anteriores de Elasticsearch.

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

Puedes incluir parámetros adicionales en la solicitud, pero los parámetros admitidos solo proporcionan un pequeño subconjunto de las opciones de OpenSearch búsqueda. 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

Para realizar búsquedas más complejas, utiliza el cuerpo de la solicitud HTTP y el lenguaje OpenSearch específico del dominio (DSL) para las consultas. La consulta DSL permite especificar la gama completa de opciones de búsqueda. 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 obtener más información, consulte la nota sobre los caracteres especiales de Unicode en los campos de texto en la OpenSearch documentación.

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 highlight opción indica OpenSearch que hay que devolver un objeto adicional dentro de la hits matriz 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 agrupa la cadena coincidente en <em> etiquetas, proporciona hasta 100 caracteres de contexto en torno a la coincidencia y divide el contenido en oraciones identificando los signos de puntuación, los espacios, las tabulaciones y los 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 OpenSearch, especialmente para la paginación profunda. Puede usar PIT con la versión 2.5 y posteriores del OpenSearch servicio. Para más información sobre PIT, consulte Búsqueda puntual 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 obtener más información sobre la paginación de búsquedas, consulte Paginar los resultados en la documentación. OpenSearch

Lenguaje de consulta de paneles

Puede usar el lenguaje de consulta de paneles (DQL) para buscar datos y visualizaciones en los paneles. OpenSearch DQL utiliza cuatro tipos de consultas principales: términos, booleano, fecha e intervalo y campo anidado.

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}