我正在尝试使用ElasticSearch解析器更新AppSync中的现有值。这是使用ElasticSearch解析器更新现有数据的方法。但是,每当我运行该代码时,都会发现错误消息。
{
"version":"2017-02-28",
"operation":"POST",
"path":"/mydata/logs/_update/$context.arguments.input.id",
"params":{
"headers":{},
"queryString":{},
"body":{
"script": {
"params" : {
"read": true
}
}
}
}
}
错误消息:
错误:GraphQL错误:Elasticsearch响应错误:错误 请求
但是我尝试使用PUT方法,移动了现有列,仅添加了read: true
列。
{
"version":"2017-02-28",
"operation":"PUT",
"path":"/mydata/logs/$context.arguments.input.id",
"params":{
"headers":{},
"queryString":{},
"body":{
"read": true
}
}
}
谢谢,请让我知道如何解决。
答案 0 :(得分:0)
我遇到了同样的错误。我认为问题之一是路径。您正在动态访问输入ID。我们应该这样吗 “ /mydata/logs/${context.arguments.input.id}/_update”。让我知道您是否仍然面临这个问题。
{
"version":"2017-02-28",
"operation":"POST",
"path":"/mydata/logs/${context.arguments.input.id}/_update",
"params":{
"headers":{},
"queryString":{},
"body":{
"script": {
"params" : {
"read": true
}
}
}
}
}
答案 1 :(得分:0)
我正在通过AppSync进行ElasticSearch upsert操作,下面是我的request.vtl代码段。
#set($args=$ctx.args)
#set($id=$util.defaultIfNull($args.id, $util.autoId()))
#set($text=$args.text)
#set($searchContextInput=$args.searchContextInput)
#set($contextTypeList=$searchContextInput.contextType)
#set($contextId=$searchContextInput.contextId)
#set($ownerId=$ctx.identity.claims.get("custom:logicalId"))
#set($reqEndpoint="/recent/_doc/${id}/_update")
#set($now=$util.time.nowISO8601())
#set($meta={
"contextId": $contextId,
"contextType": $contextTypeList,
"text": $text
})
#set($bodyReq={
"script" : {
"source": "if(ctx._source.meta==null){ ctx._source.meta=[];} ctx._source.meta.add(params.meta); ctx._source.modified=params.modified",
"lang": "painless",
"params" : {
"meta": $meta,
"modified": $now
}
},
"upsert" : {
"id" : $id,
"meta": [$meta],
"created": $now,
"modified": $now
}
})
{
"version": "2017-02-28",
"operation": "POST",
"path": $util.toJson($reqEndpoint),
"params": {
"body": $util.toJson($bodyReq)
}
}