[英]AWS CloudSearch - Getting results of a search in JSON format
我正在从node.js中的Lambda函数在我的AWS CloudSearch域上执行搜索:
我上传了一个这样的文件:
{
“some_field”: “bla bla“,
“some_date_field”: 1.466719E9,
"number_field”: 4,
“some_string”: "some long string blabla"
}
我执行这样的搜索
var params = {
query: 'bla bla',
};
cloudsearchdomain.search(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
context.fail(err);
}
else {
context.succeed(data); // successful response
}
});
搜索工作正如此处所述, CloudSearch 在匹配的字段属性中返回文档信息。 这是一个例子:
{
"status": {
"timems": 2,
"rid": “blabla”
},
"hits": {
"found": 1,
"start": 0,
"hit": [
{
"id": “452545-49B4-45C3-B94F-43524542352-454352435.6666-8532-4099-xxxx-1",
"fields": {
“some_field”: [
“bla bla“
],
“some_date_field”: [
"1.466719E9"
],
"number_field”: [
"4"
],
“some_string”: [
"some long string blabla"
],
}
}
]
}
}
如您所见,所有字段都以数组中的字符串形式返回。 反正是否有结果作为JSON保留所有字段的类型?
在向AWS提交有关此报告后,我收到了以下回复:
您好,这实际上是预期的行为。 SDK团队选择将“fields”属性实现为字符串键和字符串数组值的字典,以保持AWS SDK所在的各种语言的一致性。 他们负责在客户端上处理各种响应格式(HTTP请求与SDK方法)。 有关详细信息,请参阅: https : //github.com/aws/aws-sdk-js/issues/791
不幸的是,我上面描述的问题的唯一解决方案是:
1)创建一个解析器,根据您考虑数据类型的预期响应,根据需要解析结果
2)向您的cloudsearch索引(文本类型)添加一个新字段,其中包含整个json对象/文档的字符串化版本。 然后,您可以在此处使用JSON.parse()来获取JSON格式的文档。 这个解决方案并不理想,因为它会为您的文档添加不必要的文本块,但事实证明它是上述问题的快速解决方案。
如果有人知道,我很想听到更多的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.