4

我不知道如何从静态 HTML 页面查询我的 Amazon 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>

这给了我记录的 ID。

但是当我尝试将 URL 更改为 CloudSearch 端点时,我没有得到任何数据。阅读并转圈后,我相信这是因为 CORS。

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

对不起这么基本的问题

4

5 回答 5

0

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

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

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

于 2013-02-11T22:23:39.237 回答
0

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

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

于 2013-01-17T13:43:51.753 回答
0

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

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

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

于 2015-03-23T00:13:05.520 回答
0

您可以制作一个包含所有搜索内容的 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>

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

于 2014-12-30T18:08:05.220 回答
0

要将 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.
于 2016-02-23T22:49:00.790 回答