我在如何从一个静态的HTML页面查询我的亚马逊CloudSearch丢失。 虽然文件是好有超越复制和粘贴在浏览器的URL没有例子。
我想是S3的HTML页面,所以没有服务器端代码允许的,有一个文本字段的形式,当搜索按钮被点击触发我CloudSearch终点并返回结果
CloudSearch与JSON响应,所以必须解析,使结果的表。
到目前为止,我一直在努力与结果的保存在本地JSON和使用jQuery读取JSON文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>JSON Sample</title>
</head>
<body>
<div id="placeholder"></div>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
$.getJSON('search.json', function(data) {
var output="<ul>";
for (var i in data.hit) {
output+="<li>" + data.hit[i].id+ "</li>";
}
output+="</ul>";
document.getElementById("placeholder").innerHTML=output;
console.log(data);
});
</script>
</body>
</html>
这给了我备案编号。
但是,当我尝试改变的URL CloudSearch终点我没有得到任何回数据。 在圈子里已经阅读并巡,我相信这是因为CORS的。
然而,亚马逊的文档只是说在端点上使用HTTP GET但我怎么构建到我的HTML页面。
对不起,这样的基本问题
这将有助于you.You需要创建这样一个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
这将对应于像一个形式:
<form action="http://search-YOURDOMAIN-RANDOMID.YOURREGION.cloudsearch.amazonaws.com/2013-01-01/search" method="get">
<label>Search: <input name="q" /></label>
<input type="hidden" name="q.parser" value="simple" />
<label>How many results? <select name="size">
<option>10</option>
<option>20</option>
</select></label>
// other dropdowns, hidden inputs etc corresponding to `start`, `return`, etc
<button type="submit">Search</button>
</form>
如果你需要帮助搞清楚你应该提交什么,检查网络流量(Chrome浏览器> F12>网络选项卡),当你在CloudSearch仪表板“运行测试搜索”( https://console.aws.amazon.com / cloudsearch /家?区域= YOURREGION#搜索,YOURDOMAIN )。 或读取更多的搜索URL的例子上http://docs.aws.amazon.com/cloudsearch/latest/developerguide/searching.html
创建演示这一点,并加入到git的枢纽angularjs项目。 您需要CORS任何地方,以正确路由域。
https://github.com/tkntobfrk/amazon-cloudsearch-angular
项目采用suggesters搜索域数据和自动完成数据填充输入字段。 使用bootstrap.ui预输入。
为了使CORS到cloudsearch API,你可以使用AWS API网关HTTPPROXY到前端的cloudsearch终点。
AWS API网关允许您启用CORS。
对于我的配置,同时指定终点,我已经加入直通这些字段:开始,排序,q.options,q.parser,返回,FQ,Q,大小
您可以映射这些PARAMS这样的:
method.request.querystring.start
method.request.querystring.sort
method.request.querystring.q.options
etc.