AWS AppSync JavaScript référence de la fonction de résolution 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 AppSync JavaScript référence de la fonction de résolution pour OpenSearch

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 gestionnaires de demandes et de réponses aux fonctions pour les opérations de OpenSearch service prises en charge.

Demande

La plupart des objets de demande de OpenSearch service ont une structure commune dans laquelle seuls quelques éléments changent. L'exemple suivant exécute une recherche dans un domaine de OpenSearch service, dans lequel les documents sont de type post et sous id lesquels ils sont indexés. 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 :

export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { bool: { should: [ { match: { author: 'Nadia' } }, { match: { author: 'Bailey' } }, ], }, }, }, }, }; }

Réponse

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 réponse courants sont utilisés dans OpenSearch Service :

Liste des résultats

export function response(ctx) { const entries = []; for (const entry of ctx.result.hits.hits) { entries.push(entry['_source']); } return entries; }

Élément individuel

export function response(ctx) { return ctx.result['_source'] }

operation field

Note

Cela s'applique uniquement au gestionnaire de 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 gestionnaire de 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/type" "path" : "/indexname/type/_search"

Lorsque le gestionnaire de demandes est évalué, ce chemin est envoyé dans le cadre de la HTTP demande, y compris le domaine de OpenSearch 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 gestionnaire de 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 » :

export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { match: { city: 'seattle' } } }, }, }; }

Exemple 2

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

export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { multi_match: { query: 'washington', fields: ['city', 'state'] }, }, }, }, }; }

Transmission de variables

Note

Cela s'applique uniquement au gestionnaire de demandes.

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

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

Le gestionnaire de demande de fonction peut être le suivant :

export function request(ctx) { return { operation: 'GET', path: '/id/post/_search', params: { headers: {}, queryString: {}, body: { from: 0, size: 50, query: { multi_match: { query: ctx.args.state, fields: ['city', 'state'] }, }, }, }, }; }