使用Elasticsearch搜索用户收藏夹

时间:2014-08-01 02:19:57

标签: elasticsearch full-text-search many-to-many denormalization favorites

我们使用Elasticsearch为大约100,000个文档编制索引。用户可以喜欢的项目,目前我们正在使用Django Haystack的RelatedSearchQuerySet查看收藏夹表格,但这会执行大量SQL查询来过滤这些文档的子集,这使得搜索通过用户的最爱非常慢。

为了加快速度,我考虑为每个文档添加一个多值字段(例如favorited_by)并存储用户'其中的主键,但由于用户可以收藏数千个项目,流行的文档会变得很大。

搜索用户的收藏夹似乎是一个已解决的问题。怎么做?

1 个答案:

答案 0 :(得分:0)

在elasticsearch中,我会将收藏夹与该收藏夹的用户名一起存储。然后使用用户名向查询添加过滤器。您甚至可以将用户名用作多值字段,不确定在数千个用户的情况下是否可以扩展。如果多个用户创建相同的收藏,则每个网站可以获得优势。但我认为我会保留每位用户的最爱。