样本数据使用历史数据会话的:https://jsonblob.com/ecc7c22f-eee3-11e6-90ab-abf5eb463423Elasticsearch查询到计数使用串行日期的差异
我们要计算使用安打ElasticSearch我们的用户的会话总数。会话的
定义:
- 如果2个命中的特定用户>至30分钟之间的时间差,它会被认为是2个不同的会话。
- 如果特定用户的2次点击之间的时间差异为30分钟,则将其视为1次会话。
附图仅给出一个用户的说明。我们想为一组多个用户解决这个问题。
样本数据使用历史数据会话的:https://jsonblob.com/ecc7c22f-eee3-11e6-90ab-abf5eb463423Elasticsearch查询到计数使用串行日期的差异
我们要计算使用安打ElasticSearch我们的用户的会话总数。会话的
定义:
附图仅给出一个用户的说明。我们想为一组多个用户解决这个问题。
然后我建议利用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']; " }
}
30分钟后,你会得到以下像一个事件,它会很容易图表他们Kibana
{
"user_id": "157",
"actions": 23,
"tags": [
"_sessiontimeout"
]
}
确保您有一个工作线程与-w 1
开关
如何使用这个聚合过滤器与存储的数据从MySQL到ES。 https://jsonblob.com/ecc7c22f-eee3-11e6-90ab-abf5eb463423 –
您可以使用与现在一样的logstash配置,但在过滤器部分中添加了“聚合”过滤器并重新运行logstash。 – Val
但无处可见'updated_on'。基于历史'updated_on'的日期历史记录不是基于当前时间戳 –
你如何将数据加载到ES运行logstash?通过Logstash? – Val
是使用logstash,从mysql索引的数据,觉得elasticsearch给出的结果比mysql快,elasticsearch有助于以可视方式查找模式 –
也可以共享一些示例日志文件吗? – Val