我是 Cloudsearch
的新手,我的问题可能不清楚,所以我会尝试解释我的问题。
我们有一个后台,很多人都在进行研究,有时我们的数据库会因为某些请求执行时间超过 30 秒而崩溃,所以我们决定使用 Cloudsearch
因为我们已经使用其他一些亚马逊网络服务
。
因此,我创建了一个搜索域,根据我们在当前数据库中搜索的值创建了索引,并根据我们的测试数据库(人们搜索的结果)对所有事件(人们搜索的结果)建立了索引( ~ 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”的文档,但我认为它没有达到我想要实现的目标...也许我误解了一些东西,但如果有人可以帮助我理解如何以最好的方式做到这一点将不胜感激。
最佳答案
Can I return some media information with Cloudsearch or I will still need to use a mysql request?
如果您询问是否可以在 CloudSearch 中存储 .mp4
、.jpg
等媒体文件,答案是否定的。您可以存储文本、数字、日期和经纬度坐标(或其中任何一个的数组,经纬度除外)。
我认为处理媒体的传统方法是将媒体的 URL/路径索引为文本字段。
关于php - 如何通过Cloudsearch搜索经常变化的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305939/