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

标签 elasticsearch kibana

样本数据: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/

    相关文章:

    elasticsearch - 将 Elasticsearch 从 5 升级到 7

    jquery - 动态生成 kibana iframe(短网址)

    elasticsearch - 安装 ElasticSearch APM

    elasticsearch - 比较 kibana 搜索中的两个字段

    elasticsearch - 如何在ELK堆栈中使用Elasticsearch查询获取数组的长度?

    elasticsearch - Elasticsearch索引清理

    Elasticsearch 搜索在具有特殊字符和通配符的字段中失败

    elasticsearch - Elasticsearch索引已损坏

    ElasticSearch 从总数中计算每个桶的百分比

    java - Kibana 的 Timelion : Field [timestamp_ms] of type [text] does not support custom time zones