【发布时间】:2018-07-12 12:39:33
【问题描述】:
我是Cloudsearch 的新手,我的问题可能不清楚,所以我会尝试解释我的问题。
我们有一个后台,很多人都在做研究,有时我们的数据库是 KO,因为一些请求需要 30 多秒才能执行,所以我们决定使用Cloudsearch,因为我们已经使用了其他一些Amazon web service .
所以我创建了一个搜索域,根据我们在当前数据库中搜索的值创建了索引,并根据我们的测试数据库索引了我们所有的事件(人们搜索的结果)( ~ 42 000 行)。
我的问题是每个事件在我们的数据库中有多个媒体(.jpg、.gif 和 .mp4)(我们正在从 v3 迁移到 v4,所以有是两个媒体数据库,我们需要知道事件版本才能知道我们应该在哪里搜索:旧数据库还是新数据库)所以我的问题:我可以使用 Cloudsearch 返回一些媒体信息,否则我仍然需要使用 mysql请求?
现在我们返回数据库中的最后一个媒体添加(因此如果事件正在运行,他可以更改很多时间)和该事件的媒体总数(也可以经常更改)。
我认为可行的方法:
- 我可以在我的事件索引中添加两个字段(媒体数量 + 最后一个媒体的 url)并创建一个批处理文件来添加/更新事件数据每次我们在数据库中添加新媒体时:问题是我们可以每 10 秒发送 1 批,每天最多发送 10 000 批,所以如果我们有 50 个事件同时运行,这可能是个大问题...
- 与之前的想法相同,但我们使用 CRON 每小时创建一个包含所有最后数据的批处理文件:问题是研究不会在批处理之前进行...并且最大批处理大小为 5 MB所以这可能没问题,但如果我们有很多新数据要添加,这可能是个小问题。
- 目前的想法是使用我们从 cloudsearch 研究中获得的每个事件 id 执行 mysql 请求并返回这些信息,但我发现如果我们更改为 Cloudsearch 仍然使用 mysql 有点愚蠢...
我看到了“Using Dynamic Fields in Amazon Cloudsearch”的文档,但我认为它没有达到我想要达到的效果......也许我误解了一些东西,但如果有人可以帮助我了解如何以最好的方式做到这一点,我将不胜感激。
【问题讨论】:
-
动态字段允许您使 字段名称 本身是动态的。因此,您可以随时通过匹配模式来添加新字段。例如,我为
*_dbl设置了一个字段映射,将其映射为双精度。然后,每当我需要添加具有十进制值的字段时,它都会类似于price_dbl或popularity_dbl,我不必为这两个字段创建显式字段映射。
标签: php mysql amazon-web-services amazon-cloudsearch