AWS AppSync的解析器映射模板参考 OpenSearch - AWS AppSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS AppSync的解析器映射模板参考 OpenSearch

注意

我们现在主要支持 APPSYNC _JS 运行时及其文档。请考虑在此处使用 APPSYNC _JS 运行时及其指南。

亚马逊 OpenSearch 服务的 AWS AppSync 解析器使您能够使用 GraphQL 存储和检索账户中 OpenSearch 现有服务域中的数据。此解析器的工作原理是允许您将传入的 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 服务会向发送需要转换为 GraphQL 的响应。 AWS AppSync

大多数 GraphQL 查询都是从 OpenSearch 服务响应中查找该_source字段。由于您可以通过搜索返回单个文档或文档列表,因此 S OpenSearch ervice 中使用了两个常见的响应映射模板:

结果列表

[ #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 AWS AppSync 发送到 OpenSearch 服务域的方法HEAD或动词(GETPOSTPUT、、或DELETE)。键和值都必须是字符串。

"operation" : "PUT"

path 字段

注意

这仅适用于请求映射模板。

来自的 OpenSearch 服务请求的搜索路径 AWS AppSync。这构成URL了操作动HTTP词的 a。键和值都必须是字符串。

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

评估映射模板时,此路径将作为HTTP请求的一部分发送,包括 OpenSearch 服务域。例如,上一个示例可能会转换为:

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

params 字段

注意

这仅适用于请求映射模板。

用于指定搜索执行的操作,最常见的是在正文中设置查询值。但是,可以配置若干其他功能,如响应的格式设置。

  • headers

    标头信息(为键值对)。键和值都必须是字符串。例如:

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

    AWS AppSync 目前仅支持JSON作为Content-Type.

  • queryString

    指定常用选项的键值对,例如响应的代码格式。JSON键和值都必须是字符串。例如,如果你想获得漂亮的格式JSON,你可以使用:

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

    这是您请求的主要部分, AWS AppSync 允许您针对您的 OpenSearch 服务域名起草格式良好的搜索请求。键必须是组成对象的一个字符串。下面介绍了几个演示。

示例 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"){ ... } }

映射模板可能将状态作为参数:

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

有关可以包含在中的实用程序列表VTL,请参阅访问请求标头