在Elasticsearch中,我索引了以下格式的文档:
{
"device_id": "abc",
"views": 123,
+ other criteria
}
我可以计算:
device_id
cardinality aggregation
的唯一设备数
views
sum aggregation
的总观看次数
如何计算视图总和,以便特定设备最多只能占n
次观看次数?
例如,如果我的文档是:
{"device_id": "a", "views": 3, ...}
{"device_id": "a", "views": 4, ...}
{"device_id": "a", "views": 1, ...}
{"device_id": "b", "views": 2, ...}
{"device_id": "c", "views": 6, ...}
我的n
为5
,结果应为12
=(a
为5,即使b
的总数为8 + 2 + c
)
我的索引包含~500,000个不同的设备。
结果不需要精确,可以在合理范围内近似。
我不介意使用我自己的脚本使用技术组合(HLL,Count-Min Sketch,Bloomfilters,Min Hash,......)