📚讀後心得
當初在研究Elastic Stack,ILM這部份還不熟時,剛好搜尋到喬叔的鐵人賽文章,閱讀時彷彿挖到了寶,對於Index的管理講解得非常透徹,從Index如何被建立,使用Template以及Alias,再到導入ILM以及搭配Rollover以及Shrink等方式達到索引、搜尋、儲存等最佳化,一步一步穩定順利的完成,真的很感動。
之前使用Elastic Stack並沒有使用到ILM的配置,所以單個Index可能會超過官方建議的大小,並且使用的是以一天為單位,但實務上並非每個服務都是固定的大小,因此導入ILM對於整體的效能會有更好的幫助,並且使用三溫暖架構,讓最新的log都放在效能較好的機器上,較舊的log則隨著自定義的時間轉移到效能較差的機器上,讓搜尋能有更好的體驗。
而Rollover的使用,當資料量達到設定的條件、或是時間過太久,將Index進行rotate,產生新的Index來接收新的資料,讓原先的Index依照ILM的設定進入下一個warm phase階段。
Force Merge以及Shrink則是針對Segment Files數量以及Shards數量進行合併達到最佳化,Segment files的單檔愈大,總數愈少,空間使用率愈好,而已刪除的文件,會是透過「標示為刪除」的方式紀錄在新的Segment File,並且會等到merge時才真正的刪除,因此Force Merge將Shard中的Segment Files進行合併,可以釋放被標記要被刪除的文件在原先是read-only的Segment File所佔用的空間,藉此提升搜尋效率,;而Shrink則是減少Shards的數量,變少的規則是原先數值的因數,減少Shard的數量,增加Shard的大小,好處是可以提升搜尋的效率,儲存利用率也會較佳,壞處是如果Cluster rebalancing時成本較高,並且會限制資料被分散處理的能力,因此建議使用在較舊的資料上下去做優化處理。
書中還有提到很多最佳化的技巧,例如Shards建議的大小、memory cache的建議大小、Indexing大量資料時的處理方式等等,各種神奇的優化技巧可以讓你針對自己的使用情境下去做測試以及改善,讓你的Elastic Stack頭好壯壯,最後也感謝喬叔的經驗分享,讓我在研究Elastic Stack上少走了很多彎路,底下會放上鐵人賽的連結。