【发布时间】:2014-01-04 08:53:32
【问题描述】:
我们有以下设置(简化/更改):
MongoDB 集合: 文章
Redis 列表: 今天 昨天 本星期 本月
我们经常收到新文章并将它们放入适当的列表中(新文章进入“今天”、“本周”和“本月”[redis 列表包含 mongodb 集合的 id])。
这些列表可以包含很多项目(“本月”达到数百万)。 这些列表经常变化,文章消失又重新出现(业务逻辑)。
这些列表必须是可搜索的(+beyonce -rihanna,如果您想阅读有关碧昂丝而不是蕾哈娜的新闻)。我们的第一个实现(当列表很小时)是在 Elastic 中简单地索引整个文章集合,当搜索特定列表时,我们使用关键字 (+beyonce -rihanna) 和列表中包含的所有 id 查询 elastic。这适用于几千个条目,但正如预期的那样,它不能很好地扩展。
我们目前想到了两种方法来处理这个问题:
- 在索引新文章(弹性)时,我们会引用所有列表 它在里面。所以当查询特定列表中的文章时,我们的查询 包含关键字 (+beyonce -rihanna) 和我们正在查询的列表 从昨天)。
- 在 Elastic 中创建多个索引(每个 redis 列表 1 个)。当查询一篇文章时,我们只需指定索引和关键字。
这两种方法都对吗?还是我们应该以不同的方式处理这种情况?
【问题讨论】:
标签: database database-design elasticsearch