翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
OpenSearch 用 AWS AppSync のリゾルバーのマッピングテンプレートリファレンス
注記
現在、主に APPSYNC_JS ランタイムとそのドキュメントをサポートしています。こちらにある APPSYNC_JS ランタイムとそのガイドの使用をご検討ください。
Amazon OpenSearch Service 用 AWS AppSync リゾルバーにより、GraphQL を使用してアカウントの既存の OpenSearch Service ドメインに対してデータを保存または取得することが可能になります。このリゾルバーにより、受信した GraphQL リクエストを OpenSearch Service リクエストにマッピングし、その後の OpenSearch Service のレスポンスを GraphQL にマッピングすることができます。このセクションでは、サポートされる OpenSearch Service オペレーションのマッピングテンプレートについて説明します。
リクエストマッピングテンプレート
ほとんどの OpenSearch Service リクエストのマッピングテンプレートは一部の違いはあるものの共通の構造になっています。以下の例では、OpenSearch Service ドメインに対して検索を実行します。このドメインでは、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 はレスポンスを、AWS AppSync に送信します。これは GraphQL タイプに変換する必要があります。
ほとんどの GraphQL クエリは OpenSearch Service レスポンスから _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 メソッドまたは動作 (GET、POST、PUT、HEAD または DELETE) で AWS AppSync が OpenSearch Service ドメインに送信します。キーと値の両方が文字列である必要があります。
"operation" : "PUT"
path
フィールド
注記
これは、リクエストマッピングテンプレートにのみ適用されます。
AWS AppSync からの OpenSearch Service リクエストの検索パス。これはオペレーションの HTTP 動作に対する URL を作成します。キーと値の両方が文字列である必要があります。
"path" : "/<indexname>/_doc/<_id>" "path" : "/<indexname>/_doc" "path" : "/<indexname>/_search" "path" : "/<indexname>/_update/<_id>
マッピングテンプレートが評価されると、このパスは、OpenSearch Service ドメインが含まれる HTTP リクエストの一部として送信されます。たとえば、前の例では次のように変換される可能性があります。
GET https://opensearch-domain-name.REGION.es.amazonaws.com/indexname/type/_search
params
フィールド
注記
これは、リクエストマッピングテンプレートにのみ適用されます。
検索実行時のアクションを指定するために使用され、一般に、query 値を body 内に設定します。ただし、レスポンスのフォーマットなど、他のいくつかの機能を設定できます。
-
ヘッダ
ヘッダー情報は、キーと値のペアです。キーと値の両方が文字列である必要があります。例:
"headers" : { "Content-Type" : "application/json" }
注記
AWS AppSync では
Content-Type
として JSON のみがサポートされています。 -
queryString
一般的なオプション (JSON レスポンスのコードフォーマットなど) を指定するキーと値のペア。キーと値の両方が文字列である必要があります。たとえば、整形表示の JSON を取得する場合は、次を使用します。
"queryString" : { "pretty" : "true" }
-
body
これは、リクエストの主要部で AWS AppSync が OpenSearch Service ドメインに整形表示の検索リクエストを作成できます。キーはオブジェクトで構成される文字列である必要があります。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 に含めることができるユーティリティのリストについては、「Access Request Headers」を参照してください。