【发布时间】:2015-10-27 23:19:17
【问题描述】:
有没有一种简单的方法可以通过 elasticsearch 中的聚合计算转化率?
我有一些事件数据,例如:
{"uuid": "a92405ef-9632-44ce-9cb3-0ae83e434fe9",
"created_at": "2015-10-26T21:58:23.132923+00:00",
"has_data": true, ...}
{"uuid": "4a342de5-4047-4897-8f30-f60c64def839",
"created_at": "2015-10-26T21:57:43.985108+00:00",
"has_data": true, ...}
{"uuid": "47d6add8-003d-4c67-8e9f-1712999b4f15",
"created_at": "2015-10-26T21:51:11.062669+00:00",
"has_data": false, ...}
{"uuid": "a92405ef-9632-44ce-9cb3-0ae83e434fe9",
"created_at": "2015-10-26T21:44:17.121071+00:00",
"has_data": false, ...}
我需要计算 has_data 标志设置为 true 但之前(及时,在另一个文档中)设置为的 uuid 的唯一计数false 或相反。 对于上面的例子,我的预期结果应该是 1。只有“a92405ef-9632-44ce-9cb3-0ae83e434fe9”在两个文档中,并且同时具有 true 和 false “has_data”。
到目前为止,我已经根据“has_data”的大小和基数汇总了 uuid 条款,并从这里开始。
"aggs": {
"2": {
"terms": {
"field": "uuid",
"size": 0,
},
"aggs": {
"1": {
"cardinality": {
"field": "has_data"
}
}
}
}
}
但这是……假的。对数百万个事件和数千个 uuids 没有好处。
我想我应该选择scripted metric aggregation。但我不能把头包起来。有可能吗? 有人能指出我正确的方向吗?
【问题讨论】: