[英]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.