样本数据:https://jsonblob.com/ecc7c22f-eee3-11e6-90ab-abf5eb463423
我们想使用ElasticSearch中的点击来计算用户的 session 总数。
session 的定义:
所附图像将仅说明一个用户。我们想为一组多个用户解决此问题。
最佳答案
然后,我建议利用 aggregate
logstash filter,它可以精确地用于此目的,即tracking user behavior。
在filter
部分中,您需要添加以下aggregate
过滤器:
filter {
aggregate {
task_id => "%{user_id}"
code => "map['actions'] ||= 0; map['actions'] += 1; map['started'] = event['updated_on'] unless map['started']"
push_map_as_event_on_timeout => true
timeout_task_id_field => "user_id"
timeout => 1800 # 30 minutes timeout
timeout_tags => ['_sessiontimeout']
timeout_code => "event['session_started'] = map['started']; event['session_ended'] = event['updated_on']; " }
}
三十分钟后,您将获得以下事件,可以很容易地在Kibana中绘制它们
{
"user_id": "157",
"actions": 23,
"tags": [
"_sessiontimeout"
]
}
确保使用
-w 1
开关通过单个工作线程运行logstash
关于elasticsearch - Elasticsearch使用历史数据使用序列日期差异查询 session 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42141673/