AWS AppSync のリゾルバーマッピングテンプレートリファレンス OpenSearch - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS AppSync のリゾルバーマッピングテンプレートリファレンス OpenSearch

注記

現在、主に APPSYNC_JS ランタイムとそのドキュメントをサポートしています。APPSYNC_JS ランタイムとそのガイドの使用を検討してくださいhttps://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html

Amazon OpenSearch Service のリ AWS AppSync ゾルバーを使用すると、GraphQL を使用して、アカウントの既存の OpenSearch Service ドメインにデータを保存および取得できます。このリゾルバーは、受信する GraphQL リクエストを OpenSearch サービスリクエストにマッピングし、 OpenSearch サービスレスポンスを GraphQL にマッピングすることで機能します。このセクションでは、サポートされている OpenSearch サービスオペレーションのマッピングテンプレートについて説明します。

リクエストマッピングテンプレート

ほとんどの OpenSearch サービスリクエストマッピングテンプレートは、数個の部分だけが変化する共通の構造を持っています。次の例では、 OpenSearch サービスドメインに対して検索を実行します。ここで、ドキュメントは というインデックスの下に整理されますpost。検索パラメータは body セクションで定義され、query フィールドで定義されている多くの一般的なクエリの句を使用します。この例では "Nadia"、または "Bailey"、あるいはその両方を、ドキュメントの author フィールドに含むドキュメントを検索します。

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

レスポンスマッピングテンプレート

他のデータソースと同様に、 OpenSearch Service は GraphQL に変換 AWS AppSync する必要がある にレスポンスを送信します。

ほとんどの GraphQL クエリは、 OpenSearch サービスレスポンスから _sourceフィールドを探しています。検索を実行して個々のドキュメントまたはドキュメントのリストを返すことができるため、 OpenSearch Service では 2 つの一般的なレスポンスマッピングテンプレートが使用されます。

結果のリスト

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

個別項目

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

operation フィールド

注記

これは、リクエストマッピングテンプレートにのみ適用されます。

HTTP OpenSearch サービスドメイン AWS AppSync に送信する メソッドまたは動詞 (GET、POST、PUT、HEADまたは DELETE)。キーと値の両方が文字列である必要があります。

"operation" : "PUT"

path フィールド

注記

これは、リクエストマッピングテンプレートにのみ適用されます。

からの OpenSearch サービスリクエストの検索パス AWS AppSync。これにより、オペレーション動HTTPURL詞の が形成されます。キーと値の両方が文字列である必要があります。

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

マッピングテンプレートが評価されると、このパスは OpenSearch サービスドメインを含むHTTPリクエストの一部として送信されます。たとえば、前の例では次のように変換される可能性があります。

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

params フィールド

注記

これは、リクエストマッピングテンプレートにのみ適用されます。

検索実行時のアクションを指定するために使用され、一般に、query 値を body 内に設定します。ただし、レスポンスのフォーマットなど、他のいくつかの機能を設定できます。

  • ヘッダ

    ヘッダー情報は、キーと値のペアです。キーと値の両方が文字列である必要があります。例:

    "headers" : { "Content-Type" : "application/json" }
    注記

    AWS AppSync 現在、 は JSONとしてのみサポートされていますContent-Type

  • queryString

    JSON レスポンスのコードフォーマットなど、一般的なオプションを指定するキーと値のペア。キーと値の両方が文字列である必要があります。例えば、プリティーフォーマットの を取得する場合はJSON、以下を使用します。

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

    これはリクエストの主要な部分であり、 OpenSearch サービスドメインに対して適切な形式の検索リクエスト AWS AppSync を作成することができます。キーはオブジェクトで構成される文字列である必要があります。2 つのデモを以下に示します。

例 1

都市が「seattle」に一致するすべてのドキュメントを返します。

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

例 2

都市または州が「washington」に一致するすべてのドキュメントを返します。

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

渡す変数

注記

これは、リクエストマッピングテンプレートにのみ適用されます。

VTL ステートメントの評価の一部として変数を渡すこともできます。たとえば、次のような GraphQL クエリがあるとします。

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

マッピングテンプレートは引数として state をとることができます。

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

に含めることができるユーティリティのリストについてはVTL、「アクセスリクエストヘッダー」を参照してください。