Amazon CloudSearch查询

我对如何从静态HTML页面查询我的Amazon CloudSearch感到很遗憾。 尽管文档很好,但除了在浏览器中复制和粘贴URL之外,没有任何示例。

我想要的是S3中的HTML页面,因此不允许服务器端代码,有一个文本字段表单,当单击搜索按钮时触发我的CloudSearch终点并返回结果

CloudSearch使用JSON进行响应,因此必须对其进行解析并生成结果表。

到目前为止,我一直在本地使用保存的结果JSON并使用Jquery读取JSON文件

    JSON Sample   
$.getJSON('search.json', function(data) { var output="
    "; for (var i in data.hit) { output+="
  • " + data.hit[i].id+ "
  • "; } output+="
"; document.getElementById("placeholder").innerHTML=output; console.log(data); });

这给了我记录的ID。

但是当我尝试将URL更改为CloudSearch端点时,我没有收到任何数据。 阅读并绕圈子我认为这是因为CORS。

但是,亚马逊的文档只是说在端点上使用HTTP GET但是如何在我的HTML页面中构建它。

对不起这个基本问题

这将对您有所帮助。您需要创建这样的xml配置文件。

http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

CloudSearch目前不支持CORS,因此您的浏览器不允许您联系CloudSearch。

如果您不想运行服务器,则需要为您的请求查找代理。 你可以看看这个:

是否有支持CORS或JSONP的免费JSON代理服务器?

你可以制作一个包含搜索所有部分的html表单; 只是确保它最终构建正确的URL,例如:

http://search-YOURDOMAIN-RANDOMID.REGION.cloudsearch.amazonaws.com/2013-01-01/search?q=THESEARCHPHRASE&q.parser=simple&start=0&size=30&return=COMMA%2cSEPARATED%2cLIST_OF_FIELDS

这将对应于以下forms:

 
// other dropdowns, hidden inputs etc corresponding to `start`, `return`, etc

如果您需要帮助确定应提交的内容,请在CloudSearch信息中心“运行测试搜索”时检查网络流量(Chrome> F12>网络标签)( https://console.aws.amazon.com / cloudsearch / home?region = YOURREGION#search,YOURDOMAIN )。 或者在http://docs.aws.amazon.com/cloudsearch/latest/developerguide/searching.html上阅读更多搜索url示例

创建了一个angularjs项目,演示了这个并添加到git hub。 您需要CORS-anywhere以正确路由到域。

https://github.com/tkntobfrk/amazon-cloudsearch-angular

项目使用建议器搜索域数据并使用自动完成数据填充输入字段。 使用bootstrap.ui typeahead。

要启用CORS到cloudsearch API,您可以使用AWS API Gateway HTTPProxy来结束您的cloudsearch端点。

AWS API Gateway允许您启用CORS。

对于我的配置,我在定义终点时为这些字段添加了Passthrough:start,sort,q.options,q.parser,return,fq,q,size

您可以像这样映射每个参数:

 method.request.querystring.start method.request.querystring.sort method.request.querystring.q.options etc.