解析程序映射模板参考OpenSearch - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

解析程序映射模板参考OpenSearch

这些区域有:Amazon AppSync亚马逊解析程序OpenSearch借助服务,您可以使用 GraphQL 在现有的数据中存储和检索OpenSearch账户中的服务域。此解析程序的工作方式是:使您可以将传入的 GraphQL 请求映射到OpenSearch服务请求,然后映射OpenSearch服务响应回 GraphQL。本节介绍支持的映射模板。OpenSearch服务操作。

请求映射模板

大多数OpenSearch服务请求映射模板具有共同的结构,其中只有几项变化。以下示例会针对OpenSearch服务域,其中文档类型post并且被编入索引id. 搜索参数在 body 部分定义,而许多常用查询子句在 query 字段中定义。此示例将搜索在文档的 "Nadia" 字段中包含 "Bailey" 和/或 author 的文档。

{ "version":"2017-02-28", "operation":"GET", "path":"/id/post/_search", "params":{ "headers":{}, "queryString":{}, "body":{ "from":0, "size":50, "query" : { "bool" : { "should" : [ {"match" : { "author" : "Nadia" }}, {"match" : { "author" : "Bailey" }} ] } } } } }

响应映射模板

与其他数据源一样,OpenSearch服务将响应发送到Amazon AppSync这需要转换为 GraphQL。

大多数 GraphQL 查询会查找_source来自的字段OpenSearch服务响应。因为您可以执行搜索以返回单个文档或文档列表,所以中使用两个常见的响应映射模板。OpenSearchService (服务):

结果列表

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

单个项目

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

operation field

(仅限 REQUEST 映射模板)

HTTP 方法或动词(GET、POST、PUT、HEAD 或 DELETE)Amazon AppSync发送到OpenSearch服务域。键和值都必须是字符串。

"operation" : "PUT"

path field

(仅限 REQUEST 映射模板)

查找的路径OpenSearch来自的服务请求Amazon AppSync. 这构成了操作的 HTTP 谓词的 URL。键和值都必须是字符串。

"path" : "/indexname/type" "path" : "/indexname/type/_search"

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

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

params field

(仅限 REQUEST 映射模板)

用于指定搜索执行的操作,最常用的方式是设置询问内部的价值身体. 但是,可以配置若干其他功能,如响应的格式设置。

  • headers

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

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

    注意:AmazonAppSync目前仅支持 JSON 作为Content-Type.

  • queryString

    指定常用选项的键值对,如 JSON 响应的代码格式设置。键和值都必须是字符串。例如,如果您要获得格式正确的 JSON,应使用:

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

    这是请求的主要部分,允许Amazon 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"] } } }

传递变量

(仅限 REQUEST 映射模板)

还可以在 VTL 语句中作为评估的一部分传递变量。例如,假设您具有以下 GraphQL 查询,如下所示:

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

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

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

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