David Chao

David Chao

#
ELK 系列

MySQL + Logstash 更新時區問題

2020/03/24

Elastic 真的是 Laravel、MySQL 的好幫手,當資料結構複雜、資料量大、又需要做複雜篩選的時候,用 Elastic 來做搜尋速度真的是嚇嚇叫!

搭配 Logstash 直接對 MySQL 的資料來做更新也是非常方便,這樣的方式基本上可以達到更新的部份幾乎不用再另外寫 Code,但還是有些地方必須注意,像時區就是一個問題。

在 Logstash 中我們通常會使用 tracking_column 來記錄最後新增的 id,避免每次資料都全部更新,Logstash 在 tracking_column_type 除了 numeric 也支援 timestamp,所以如果我們的資料會有 edit 的狀況,就可以搭配 updated_at 來做增量的更新。

但要注意的就是時區問題,以我的情況為例,我的時區是 utc + 8,但 logstash 紀錄的時候會轉為 utc,這樣下次再篩選的時候就會有資料遺失,拜完 Google 大神後找到相關解法,有需要的朋友請服用。

Logstash 相關設定

邏輯很簡單,就是透過 filter 來把時區的部份自行做處理,這樣就可以避免上面說的問題囉,祝各位服用愉快。

發佈留言