elasticsearch Elasticsearch查询使用历史数据(使用序列日期差)对会话进行计数,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch Elasticsearch查询使用历史数据(使用序列日期差)对会话进行计数,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch Elasticsearch查询使用历史数据(使用序列日期差)对会话进行计数

elasticsearch Elasticsearch查询使用历史数据(使用序列日期差)对会话进行计数,elasticsearch,kibana,elasticsearch,Kibana,样本数据: 我们想计算用户在ElasticSearch中使用hits的会话总数 会议的定义: 如果特定用户的两次点击之间的时间差>30分钟,则将其视为两次不同的会话 如果特定用户的两次点击之间的时间差

样本数据:

我们想计算用户在ElasticSearch中使用hits的会话总数

会议的定义:

  • 如果特定用户的两次点击之间的时间差>30分钟,则将其视为两次不同的会话
  • 如果特定用户的两次点击之间的时间差<30分钟,则视为一次会话

所附图像将仅给出一个用户的图示。我们希望为多个用户的集合解决此问题。

然后我建议利用,它可以完全用于此目的,即

过滤器
部分,您需要添加以下
聚合
过滤器:

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"
    ]
}

确保使用带有
-w1
开关的单个工作线程运行logstash

如何将数据加载到ES?通过Logstash?是的,使用Logstash,从mysql索引的数据,Feeld elasticsearch比mysql提供更快的结果,elasticsearch帮助可视化地找到模式。那么,您可以共享一些示例日志文件吗?它只来自sql simple
user\u id
updated\u on
如何使用此聚合过滤器将存储的数据从mysql存储到es。您使用了与现在相同的日志存储配置,但是您在筛选器部分添加了
聚合
筛选器并重新运行日志存储。但是我看不到
更新的地方。基于历史
更新的日期直方图不是基于当前时间的。你说得对,我错过了。但是,您希望在会话中使用哪个
更新了\u,第一个还是最后一个?或者我们可以使用第一个和最后一个来划分会话?我已经更新了答案,在新事件中包括
session\u start
session\u end