MySql与ElasticSearch中的聚合

时间:2017-10-30 12:19:07

标签: mysql elasticsearch aggregation

我正在开发一个电子商务网站,用户可以对可用产品表现出兴趣,并将其存储在MySQL表中。此Leads表包含数百万条记录,每分钟增长8条记录。表结构如下:

LeadId | ProductId | UserId | RequestDate(DateTime)

我要求在30天内只允许x个潜在客户。因此,我需要汇总数据以获取过去30天内的潜在客户数,并相应地阻止用户。我需要有关以下方法的建议:

  1. MySQL聚合查询:我可以在UserId&添加索引RequestDate字段并获得30天的计数。

  2. 使用ElasticSearch:我可以创建包含这些字段的文档并对其进行聚合。

  3. 汇总表:每日或每小时创建汇总表并获取计算数据。对于最后x个单位时间的数据进行聚合,实现这可能很复杂。

  4. 我看到方法2中的性能优势和方法1中的维护优势。我应该使用以下哪种方法?

1 个答案:

答案 0 :(得分:0)

将所有超过30天的潜在客户移至归档表以减少行数。当您将数据复制到存档时,为每个用户创建一个正计数器并每天增加它。如果用户添加了潜在客户,请减少它。如果计数器为零,则无法从该用户添加任何其他线索。