我正在編寫一個基於Java的Web服務器監視器應用程序,只要用戶在特定時間範圍內按特定順序瀏覽給定的一組頁面,就能夠檢測到該應用程序。爲此,我正在使用Esper library。我對查詢的最佳表達方式有些懷疑。使用EPL跟蹤事件序列
我首先聲明瞭一個'Access'對象,用於存儲到達我的Web服務器的HTTP請求的所有信息。無論何時向服務器發出新的請求,都會實例化新的Access對象,並將其作爲事件發送到EPL處理核心。
假設我想跟蹤所有瀏覽頁面A,頁面B,然後頁面C的用戶。哪個是處理這種情況的最佳方法?我是否需要執行多個連接,每個連接都有一個連接,如下例所示?
select * from Access(request='GET /A HTTP/1.1').win:time(30 sec) as a1,
Access(request='GET /B HTTP/1.1').win:time(30 sec) as a2,
Access(request='GET /C HTTP/1.1').win:time(30 sec) as a3
where a1.IP=a2.IP AND a2.IP=a3.IP
謝謝,它的工作! – Umberto