如果在ES中會不斷累積資料的index
例如紀錄每日access-log的相關index
除了資料會不斷累積之外,相比最新的資料
我們可能對於較舊的資料查詢的需求會比較低
ES提供Index lifecycle management
(ILM)來幫助管理這種time series data以及data stream
multiple tiers
,讓處於不同時間階段的index有不同的表現特性,並且能自動轉換之前我們好像沒有提過data stream
只適用於append-only time series data
可以儲存跨多個index
的資料,並且賦予name讓請求時能夠宣告
index template
適合儲存有關log等持續增長的資料
在data stream底下的文檔必須包含@timestamp field
寫入一個data stream時,會優先寫入底下最新創建的index
backing index
,即使直接指定該indexILM將index定義成5種生命週期階段
階段名稱 | 能否被更新 | 能否被搜尋 | 效率 | 描述 |
---|---|---|---|---|
Hot | 可以 | 可以 | 最快 | 最常查詢與頻繁更新 |
Warm | 幾乎不再更新 | 可以 | 低於Hot,高於其他階段 | 用於不太需要更新,但是還是需要常常查詢 |
Cold | 不再更新 | 可以 | 低 | 還是需要查詢到,但是速度沒有要求的類型 |
Frozen | 不再更新 | 可以 | 最低 | 查詢速度最慢 |
Delete | 不再更新 | 不再更新 | - | 可以將其刪除的index |
在不同階段,也有規範可以執行的操作
階段名稱 | 支持的phase action |
---|---|
Hot | Set priority, unfollow, rollover, read-only, downsample, shrink, force merge, searchable snapshot |
Warm | Set priority, unfollow, read-only, downsample, allocate, migrate, shrink, force merge |
Cold | Set priority, unfollow, read-only, downsample, searchable snapshot, allocate, migrate |
Frozen | Unfollow, searchable snapshot |
Delete | Wait for snapshot, delete |
針對其中幾種action來進行說明
is_write_index
設為trueis_write_index
設為false_close
reallocate
已經shrink的index,會根據你設定的allocation rules
將其分配到適合的nodes上snapshot repository
mount snapshot API
來手動對現有index執行這邊簡單做個統整:
rollover
,將source index中的資料滾動到target中
shrink
成較小shard的index,以及透過force merge
的方式去優化資料allocate
到其他主機上,改變表現形式searchable snapshots
來達到最低限度的儲存方式delete
不過這不是絕對的流程,也不一定符合所有情況
只是藉由這樣的介紹希望能更了解這些機制的運作模式與應用場景
今天介紹了ES對於不同資料形式
index以及data stream的管理方式以及原理
明天會介紹相關的API使用方式
參考資料
data stream:
https://www.elastic.co/guide/en/elasticsearch/reference/current/data-streams.html
data management:
https://www.elastic.co/guide/en/elasticsearch/reference/current/data-management.html
index lifecycle:
https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-index-lifecycle.html
rollover:
https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-rollover.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-rollover-index.html
shrink:
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-shrink-index.html
force merge:
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/indices-forcemerge.html
allocate:
https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-allocate.html
snapshots:
https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html
searchable snapshots:
https://www.elastic.co/guide/en/elasticsearch/reference/current/searchable-snapshots.html