AWS AppSyncreferencia de plantilla de mapeo de resolución para OpenSearch - AWS AppSync

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.

AWS AppSyncreferencia de plantilla de mapeo de resolución para OpenSearch

nota

Ahora admitimos principalmente el tiempo de ejecución APPSYNC _JS y su documentación. Considere la posibilidad de utilizar el motor de ejecución APPSYNC _JS y sus guías aquí.

El AWS AppSync solucionador para Amazon OpenSearch Service le permite utilizar GraphQL para almacenar y recuperar datos en los dominios de OpenSearch servicio existentes en su cuenta. Este solucionador funciona al permitirle asignar una solicitud de GraphQL entrante a una solicitud de OpenSearch servicio y, a continuación, volver a asignar la respuesta del OpenSearch servicio a GraphQL. En esta sección se describen las plantillas de mapeo para las operaciones de OpenSearch servicio compatibles.

Plantilla de mapeo de solicitudes

La mayoría OpenSearch de las plantillas de mapeo de solicitudes de servicio tienen una estructura común en la que solo cambian algunas partes. En el siguiente ejemplo, se ejecuta una búsqueda en un dominio de OpenSearch servicio, donde los documentos se organizan en un índice denominadopost. 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 con otras fuentes de datos, OpenSearch Service envía una respuesta AWS AppSync que debe convertirse a GraphQL.

La mayoría de las consultas de GraphQL buscan el _source campo de una respuesta de OpenSearch servicio. Como puedes realizar búsquedas para obtener un documento individual o una lista de documentos, existen dos plantillas de mapeo de respuestas que se utilizan habitualmente en OpenSearch Service:

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 solo se aplica a la plantilla de mapeo de solicitudes.

HTTPmétodo o verbo (GET, POSTPUT, HEAD oDELETE) que se AWS AppSync envía al dominio del OpenSearch servicio. 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.

La ruta de búsqueda de una solicitud de OpenSearch servicio desde AWS AppSync. Esto forma una URL para el HTTP verbo 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 HTTP solicitud, incluido el dominio del OpenSearch servicio. Por ejemplo, el ejemplo anterior puede convertirse como:

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

Campo params

nota

Esto solo se aplica 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

    AWS AppSync actualmente solo admite JSON comoContent-Type.

  • queryString

    Pares clave-valor que especifican opciones comunes, como el formato de código para JSON las respuestas. Tanto la clave como el valor deben ser cadenas. Por ejemplo, si quieres tener un formato bonito, utilizarías: JSON

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

    Esta es la parte principal de tu solicitud, que te permite elaborar una solicitud de búsqueda bien formada AWS AppSync para tu dominio de servicio. OpenSearch 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 pasar variables como parte de la evaluación de la VTL declaración. 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 utilidades que puede incluir en elVTL, consulte los encabezados de las solicitudes de acceso.