繁体   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