簡體   English   中英

AWS CloudSearch - 以JSON格式獲取搜索結果

[英]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格式的文檔。 這個解決方案並不理想,因為它會為您的文檔添加不必要的文本塊,但事實證明它是上述問題的快速解決方案。

如果有人知道,我很想聽到更多的解決方案。

CloudSearch 確實保留了字段類型; 結果意味着您已將這些字段配置為數組。

您可以通過在AWS Web控制台上轉到域的索引選項來確認這一點。 您應該看到text-arrayliteral-array等字段,如下面的屏幕截圖所示。 這些將作為數組返回。 如果您只為每個文檔中的每個字段提交單個值,則可以將它們更改為非數組類型,並且您將獲得非數組值。 索引選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM