我已在api网关中添加了集成响应模板,即来自弹性搜索引擎的响应,并且我试图解析该响应以删除点击数等其他元数据。
#set($esOutput = $input.path('$.hits.hits'))
#set($orders = [])
#foreach( $esOrder in $esOutput )
#set($order = $esOrder['_source'])
#set($response = $orders.add($order) )
#end
$orders
我面临的问题是从响应模板中获取的响应的顺序如下:
[{user = kimchy,post_date = 2009-11-15T14:12:12,message =正在尝试Elasticsearch}]
但是我想要正确的json格式。这里需要解决的问题。
这就是我从弹性搜索中得到的:
{
"took" : 1,
"hits" : {
"hits" : [
{
"_id" : "1",
"_score" : 1.0,
"_source" : {
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
}
]
}
}
答案 0 :(得分:0)
这是我通过在API网关集成响应映射模板中编写VTL代码来解决此问题的方法:
#set($esOutput = $input.path('$.hits.hits'))
#set($one=1)
#set($length= $esOutput.size()-$one)
[
#foreach( $esOrder in $esOutput )
#set( $order = "$.hits.hits["+$foreach.index+"]._source" )
#set($dispatchOrder =$input.json($order))
$dispatchOrder
#if( $foreach.index<$length )
,
#end
#end
]