樣本數據使用歷史數據會話的: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