AWS AppSyncréférence du modèle de mappage du résolveur pour OpenSearch - AWS AppSync

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS AppSyncréférence du modèle de mappage du résolveur pour OpenSearch

Note

Nous prenons désormais principalement en charge le runtime APPSYNC _JS et sa documentation. Pensez à utiliser le runtime APPSYNC _JS et ses guides ici.

Le AWS AppSync résolveur pour Amazon OpenSearch Service vous permet d'utiliser GraphQL pour stocker et récupérer des données dans les domaines de service OpenSearch existants de votre compte. Ce résolveur fonctionne en vous permettant de mapper une requête GraphQL entrante en OpenSearch une demande de service, puis de mapper la réponse OpenSearch du service à GraphQL. Cette section décrit les modèles de mappage pour les opérations de OpenSearch service prises en charge.

Modèle de mappage des demandes

La plupart des modèles de mappage des demandes de OpenSearch service ont une structure commune dans laquelle seuls quelques éléments changent. L'exemple suivant exécute une recherche dans un domaine OpenSearch de service, où les documents sont organisés sous un index appelépost. Les paramètres de recherche sont définis dans la section body, avec un grand nombre de clauses de requête courants définies dans le champ query. Cet exemple recherche des documents contenant "Nadia" ou "Bailey", ou les deux, dans le champ author d'un document :

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

Modèle de mappage des réponses

Comme pour les autres sources de données, OpenSearch Service envoie une réponse AWS AppSync qui doit être convertie en GraphQL.

La plupart des requêtes GraphQL recherchent le _source champ à partir d'une réponse de OpenSearch service. Comme vous pouvez effectuer des recherches pour renvoyer un document individuel ou une liste de documents, deux modèles de mappage des réponses sont couramment utilisés dans OpenSearch Service :

Liste des résultats

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

Élément individuel

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

operation field

Note

Cela s'applique uniquement au modèle de mappage des demandes.

HTTPméthode ou verbe (GET, POSTPUT, HEAD ouDELETE) qui AWS AppSync envoie au domaine OpenSearch de service. La clé et la valeur doivent être une chaîne.

"operation" : "PUT"

path field

Note

Cela s'applique uniquement au modèle de mappage des demandes.

Le chemin de recherche d'une demande OpenSearch de service auprès de AWS AppSync. Cela forme un URL pour le HTTP verbe de l'opération. La clé et la valeur doivent être des chaînes.

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

Lorsque le modèle de mappage est évalué, ce chemin est envoyé dans le cadre de la HTTP demande, y compris le domaine OpenSearch de service. Ainsi, l'exemple précédent pourrait donner :

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

params field

Note

Cela s'applique uniquement au modèle de mappage des demandes.

Permet de spécifier l'action exécutée par votre recherche, plus couramment en définissant la valeur de requête à l'intérieur du corps. Toutefois, il existe plusieurs autres capacités qui peuvent être configurées, comme la mise en forme des réponses.

  • headers

    Informations d'en-tête, sous forme de paires clé-valeur. La clé et la valeur doivent être des chaînes. Par exemple :

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

    AWS AppSync n'est actuellement pris en charge qu'JSONen tant queContent-Type.

  • queryString

    Paires clé-valeur qui spécifient les options courantes, telles que le formatage du code pour les JSON réponses. La clé et la valeur doivent être une chaîne. Par exemple, si vous voulez obtenir un joli formatageJSON, vous devez utiliser :

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

    Il s'agit de la partie principale de votre demande, qui permet AWS AppSync de créer une demande de recherche bien formée pour votre domaine OpenSearch de service. La clé doit être une chaîne composée d'un objet. Voici quelques démonstrations.

Exemple 1

Renvoyer tous les documents avec une ville correspondant à « seattle » :

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

Exemple 2

Renvoyer tous les documents correspondant à « washington » comme ville ou État :

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

Transmission de variables

Note

Cela s'applique uniquement au modèle de mappage des demandes.

Vous pouvez également transmettre des variables dans le cadre de l'évaluation dans la VTL déclaration. Par exemple, supposons que vous ayez une requête GraphQL similaire à la suivante :

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

Le modèle de mappage pourrait avoir l'état comme argument :

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

Pour obtenir la liste des utilitaires que vous pouvez inclure dans leVTL, consultez la section En-têtes de demande d'accès.