【问题标题】:How often should I upload documents to CloudSearch (Solr)?我应该多久将文档上传到 CloudSearch (Solr)?
【发布时间】:2015-07-05 16:22:37
【问题描述】:

这是我的用例:

我使用 MySQL 作为我的主要数据存储并使用 CloudSearch 进行搜索。数据库包含表:threads、cmets、upvotes、users。

我创建了一个表达式,使用 upvotes 和 created_at 日期(Hacker News Hot 算法)根据“趋势”对搜索结果进行排序。此表达式称为“趋势”,在 CloudSearch 查询中使用如下:/search?q=Superman&sort=trend+desc

(upotes-1)/pow(floor((_time-created_at)/3600000)+2, 1.8)

现在,当用户点赞一个话题或评论时,它会存储在 MySQL 数据库中。我的问题我应该如何让投票与 CloudSearch 保持同步?

我看到的两个选项:

  1. 立即在 MySQL 中插入(替换)赞成票,然后更新 CloudSearch 上的分数。这涉及在每次投票时发送单个文档上传,但要确保实时准确性。
  2. 立即在 MySQL 中插入(替换)upvote,然后将 upvote 保存在缓存中的某个位置(Redis?)。每小时一次,将所有赞成票上传到 CloudSearch。

处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: mysql database amazon-web-services solr amazon-cloudsearch


    【解决方案1】:

    这真的取决于很多事情

    1. 您的 solr 设置、多少服务器、多少内存、CPU、存储、多少文档、每个分片/服务器的索引大小等。

    2. 您期望获得多少“估计”的赞成票?如果你选择 1,你会更容易决定是否可以估计一下 号码。

      由于您使用的是 SolrCloud,它具有 NRT 功能,可确保 这些文件几乎可以立即用于搜索。但 再次取决于您当前的文档语料库,以及有多少 您期望的每秒或每分钟更新。

    如果您知道赞成票的数量(对 solr 的更新)并且如果您有足够好的服务器,我会选择选项 1,因为它会减少维护另一个数据库的开销,以及每小时将赞成票更新到 solr 的逻辑.

    您始终可以设置几个测试服务器,并进行一些压力测试,以找出 Solr 性能会降低的确切更新次数。

    我知道这可能不会给你一个确切的是或否,但就像我说的,这真的取决于你的特定用例。

    【讨论】:

    • 这给了我一个相当好的答案。我将使用选项 1 并按照建议进行压力测试。如果事情不顺利,我会在这里发布基准。
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多