Referencia de plantillas de mapeo de solucionador de AWS AppSync para OpenSearch - AWS AppSync GraphQL

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.

Referencia de plantillas de mapeo de solucionador de AWS AppSync para OpenSearch

nota

Ahora admitimos de forma básica el tiempo de ejecución APPSYNC_JS y su documentación. Considere la opción de utilizar el tiempo de ejecución APPSYNC_JS y sus guías aquí.

El solucionador de AWS AppSync para Amazon OpenSearch Service permite utilizar GraphQL para almacenar y recuperar datos de dominios de OpenSearch Service ya existentes en su cuenta. Para funcionar, este solucionador permite mapear una solicitud de GraphQL entrante a una solicitud de OpenSearch Service y, a continuación, mapear la respuesta de OpenSearch Service a GraphQL. En esta sección se describen las plantillas de mapeo para las operaciones de OpenSearch Service admitidas.

Plantilla de mapeo de solicitudes

La mayoría de plantillas de mapeo de solicitudes de OpenSearch Service presentan una estructura común en la que tan solo cambian unos pocos elementos. En el siguiente ejemplo se ejecuta una búsqueda en un dominio de OpenSearch Service donde los documentos están organizados bajo un índice denominado post. Los parámetros de búsqueda se definen en la sección body y muchas de las cláusulas de consulta comunes se definen en el campo query. En este ejemplo se buscan documentos que contengan "Nadia", "Bailey" o ambos en el campo author de un documento:

{ "version":"2017-02-28", "operation":"GET", "path":"/post/_search", "params":{ "headers":{}, "queryString":{}, "body":{ "from":0, "size":50, "query" : { "bool" : { "should" : [ {"match" : { "author" : "Nadia" }}, {"match" : { "author" : "Bailey" }} ] } } } } }

Plantilla de mapeo de respuestas

Al igual que ocurre con otros orígenes de datos, OpenSearch Service envía una respuesta a AWS AppSync que debe convertirse a GraphQL.

La mayoría de consultas de GraphQL buscan el campo _source de una respuesta de OpenSearch Service. Puesto que puede hacer búsquedas para devolver un documento individual o una lista de documentos, en OpenSearch Service se utilizan dos plantillas de mapeo de respuestas comunes:

Lista de resultados

[ #foreach($entry in $context.result.hits.hits) #if( $velocityCount > 1 ) , #end $utils.toJson($entry.get("_source")) #end ]

Elemento individual

$utils.toJson($context.result.get("_source"))

Campo operation

nota

Esto se aplica únicamente a la plantilla de mapeo de solicitudes.

Método o verbo HTTP (GET, POST, PUT, HEAD o DELETE) que envía AWS AppSync al dominio de OpenSearch Service. Tanto la clave como el valor deben ser cadenas.

"operation" : "PUT"

Campo path

nota

Esto se aplica únicamente a la plantilla de mapeo de solicitudes.

Ruta de búsqueda de una solicitud de OpenSearch Service desde AWS AppSync. Esto constituye una URL para el verbo HTTP de la operación. Tanto la clave como el valor deben ser cadenas.

"path" : "/<indexname>/_doc/<_id>" "path" : "/<indexname>/_doc" "path" : "/<indexname>/_search" "path" : "/<indexname>/_update/<_id>

Cuando se evalúa la plantilla de mapeo, esta ruta se envía como parte de la solicitud HTTP, incluido el dominio de OpenSearch Service. Por ejemplo, el ejemplo anterior puede convertirse como:

GET https://opensearch-domain-name.REGION.es.amazonaws.com/indexname/type/_search

Campo params

nota

Esto se aplica únicamente a la plantilla de mapeo de solicitudes.

Se utiliza para especificar la acción que realiza la búsqueda, normalmente estableciendo el valor query dentro de body. Sin embargo, se pueden configurar otras funcionalidades, como, por ejemplo, el formato de las respuestas.

  • headers

    Es la información del encabezado en forma de pares clave-valor. Tanto la clave como el valor deben ser cadenas. Por ejemplo:

    "headers" : { "Content-Type" : "application/json" }
    nota

    Actualmente, AWS AppSync solo admite JSON como Content-Type.

  • queryString

    Son los pares clave-valor que especifican opciones comunes, como el formato de código de las respuestas JSON. Tanto la clave como el valor deben ser cadenas. Por ejemplo, si desea JSON con formato pretty, puede especificar:

    "queryString" : { "pretty" : "true" }
  • body

    Esta es la parte principal de la solicitud, la que permite a AWS AppSync crear una petición de búsqueda bien formada dirigida al dominio de OpenSearch Service. La clave debe ser una cadena compuesta por un objeto. A continuación se muestran algunos ejemplos.

Ejemplo 1

Devuelve todos los documentos que incluyan la ciudad “seattle”:

"body":{ "from":0, "size":50, "query" : { "match" : { "city" : "seattle" } } }

Ejemplo 2

Devuelve todos los documentos que incluyan “washington” como ciudad o estado:

"body":{ "from":0, "size":50, "query" : { "multi_match" : { "query" : "washington", "fields" : ["city", "state"] } } }

Variables de transferencia

nota

Esto se aplica únicamente a la plantilla de mapeo de solicitudes.

También puede transferir variables como parte de la evaluación a la instrucción en VTL. Por ejemplo, suponga que ha tenido la siguiente consulta de GraphQL:

query { searchForState(state: "washington"){ ... } }

La plantilla de mapeo podría tomar el estado como un argumento:

"body":{ "from":0, "size":50, "query" : { "multi_match" : { "query" : "$context.arguments.state", "fields" : ["city", "state"] } } }

Para obtener una lista de las funciones que puede incluir en el código VTL, consulte Acceso a los encabezados de consultas.