管理 Index 的 Best Practices 系列文章索引
這一系列的文章分別介紹了隨著時間不斷增長資料的 Index 該如何管理,除了透過 Index Lifecycle Management 移除舊的資料、透過 Rollup 把資料顆粒度變大、這邊要介紹的是透過 Transform 的功能,把資料進行轉換後再儲存。
Transform 是 Elasticsearch 7.2 推出的強大新功能,這是在 X-pack
中的 Basic License
,所以 Open Source 版是沒有這個功能的,Transform 主要目的是將 Index 資料透過 Pivot (樞杻) 分析的方式運算後轉換成另外的資料檢視維度並儲存至另個 Index 中,這個資料轉換與整理的機制,背後就是用 Aggregation 來進行處理,但既然 Aggregation 就能做這這個 Transform 的處理,為什麼還要用 Transform 呢?下面會介紹什麼時候該用 Transform 。
Group By ... Having ...
、Sub Query + Where 或 Order By
…等在 Elasticsearch 要用到大量的 Bucketing + bucket selector
…甚至你不知道要怎麼寫這個 Aggregation。Pipeline Aggregation
時,卻又要使用到排序,且遇到 Elasticsearch 目前並不支援這樣的操作。接下來直接進入 Kibana > Stack Management > Transform 的畫面,來建立一個 Transform。
建立 Transform 時,第一步會要選擇資料的來源,這邊會需要先在 Kibana 建立好 Index Pattern。
接下來會要決定 Group By
的欄位會有哪些,以及資料分析時要有哪些 Aggregation 的運算。
在資料來源的檢視畫面上,可以切換 Histogram charts
,可以看到每一個欄位的資料分步狀況。
在選擇好欄位後,底下會可以預覽這個 Transform 的 Aggregation 查詢的結果。
確認資料彙總的方式沒問題後,接下來設定 Transform 的基本資訊,包含 Transfor ID, 產出結果存放目的地 Index 名稱,若是有選擇時間的 Group By 條件,也會要指定 Time Filter field name,再來指定 Date field 用來判斷資料是否有更新,最後是 Delay。
一切就緒後,就是執行 Create and start
,若好奇這個 UI 產生出來的 Create Transform API payload 長什麼樣,也可以選擇 Copy to clipboard
,並貼到 Kibana Dev Tools 去執行。
執行後,可以到 Transforms 頁面看建立的 Transform Job,或是到 Discover 查詢 Tranform 出來的資料內容。
建立好之後,在 Transforms 畫面可以看到這個 Transform job 正在執行,也可以看到他的 Status。
若我們進入到 Discover 頁面,可以發現從 Kibana 建立的 Transform 自動也建立了 Index Pattern ,所以可以直接選擇這個 Index Pattern 來瀏覽資料。
若直接從 _search
API 來查看裡面的資料,每一個 Document 很單純的就是我們所指定彙總的結果。
一但有了這個 Transform 後的資料,也可以直接用 Virtualize 以這個資料來源拉出想要分析的資料圖表。
接下來也可以把多個 Virtualize 的圖表拉到 Dashboard 中,你會發現這個直接從 Transform 的結果當資料來源,執行速度比原先快上非常的多,而且還可以再進一步使用 Aggregation 來達到更多變化的應用!
docs_per_second
的節流設定,避免造成 Elasticsearch Cluster 服務的穩定性。terms
數量限制上,都可能會需要依照使用的情境來做對應的調整,相關的設定在 max_page_search_size
及 index.max_terms_count
。Frequency
時,要注意,這個值同時也是 Transform 發生錯誤時,retry 的機制使用的間隔時間。sync.tim.delay
的值,要有適度的時間等讓 indexing 的資料完成處理,並且可被搜尋到,特別是要注意是否有正確的對應到 index.refresh_interval
的值。查看最新 Elasticsearch 或是 Elastic Stack 教育訓練資訊: https://training.onedoggo.com
歡迎追蹤我的 FB 粉絲頁: 喬叔 - Elastic Stack 技術交流
不論是技術分享的文章、公開線上分享、或是實體課程資訊,都會在粉絲頁通知大家哦!
此系列文章已整理成書
喬叔帶你上手 Elastic Stack:Elasticsearch 的最佳實踐與最佳化技巧
書中包含許多的修正、補充,也依照 Elastic 新版本的異動做出不少修改。
有興趣的讀書歡迎支持! 天瓏書局連結