gpt4 book ai didi

elasticsearch - Elasticsearch使用历史数据使用序列日期差异查询 session 计数

转载 作者:行者123 更新时间:2023-12-02 22:30:27 25 4
gpt4 key购买 nike

样本数据:https://jsonblob.com/ecc7c22f-eee3-11e6-90ab-abf5eb463423

我们想使用ElasticSearch中的点击来计算用户的 session 总数。

session 的定义:

  • 如果特定用户的2次匹配之间的时间差> 30分钟,则将其视为2个不同的 session 。
  • 如果特定用户的2次匹配之间的时间差小于30分钟,则将其视为1次 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com