elasticsearch - 来自 Lambda 的 AppSync 映射响应从 ElasticSearch 获取结果
问题描述
我正在尝试从 AppSync 调用一个 lambda 函数,传递一个搜索查询。lambda 正在调用返回结果集的弹性搜索。
我能够将结果集映射到 graphQL Schama 中的不同字段
$#set($result = {
"statusCode": "${context.result.statusCode}",
"headers": "${context.result.headers}",
"isBase64Encoded": "${context.result.isBase64Encoded}",
"body": "${context.result.body}"
})
$util.toJson($result)
在正文中获取我需要然后解析并将它们映射到 Schama 的搜索结果集。
我无法提取响应 ${context.result.body.hits.hits} 来遍历 _source 并设置搜索结果集
任何建议和指导都会非常有帮助。
解决方案
AppSync 内置了对 Amazon Elasticsearch 解析器的支持。您可以在此处找到更多相关信息!
但是,如果您希望保留当前的 Lambda 解析器,您可以尝试以下映射模板:
## Delcare an empty array
#set( $result = [] )
## Loop through results
#foreach($entry in $context.result.hits.hits)
## Add each item to the result array
$util.qr($result.add(
{
'id' : $entry.get("_source")['id'],
'title' : $entry.get("_source")['fields']['title'],
'plot' : $entry.get("_source")['fields']['plot'],
'year' : $entry.get("_source")['fields']['year'],
'url' : $entry.get("_source")['fields']['image_url']
}))
#end
## Parse the result
$util.toJson($result)
推荐阅读
- winforms - 关于“IServiceProvider”的大量错误
- websocket - 什么 STOMP 标头可以关闭订阅?
- filter - 带有对象的新 kstream
- javascript - javascript游戏 - 操纵杆问题
- java - Java登录系统不起作用
- python - 来自图表的微笑
- ffmpeg - 如何每隔 yy 秒剪切 xx 秒并使用 ffmpeg 在视频中循环直到结束
- java - 获取直到特定时间点的时间
- azure - IP 地址如何在 Azure vnet 中连接到 vnet 连接
- php - 一旦在任何事件发生后重新获取,就使用 ajax for table。?