生命周期中的操作
Set Priority
一旦策略進入熱、暖或冷階段,就設(shè)置索引的優(yōu)先級。在節(jié)點重啟后,優(yōu)先級較高的索引會在優(yōu)先級較低的索引之前被恢復(fù)。
一般來說,熱階段的索引應(yīng)該有最高值,冷階段的索引應(yīng)該有最低值。例如:HOT階段為100,Warm階段為50,cold階段為0。沒有設(shè)置這個值的索引,其默認的優(yōu)先級為1。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"set_priority" : {
"priority": 50
}
}
}
}
}
}
Unfollow
將CCR跟隨者索引轉(zhuǎn)換為普通索引。這使得shrink、rollover和searchable snapshot等操作可以在跟隨者索引上安全地執(zhí)行。當(dāng)在生命周期中移動跟隨者索引時,你也可以直接使用unfollow。對不是跟隨者的索引沒有影響,階段執(zhí)行只是移動到下一個動作。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"unfollow" : {}
}
}
}
}
}
Freeze – 版本之后8.0開始取消
凍結(jié)一個索引以減少其內(nèi)存占用。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"cold": {
"actions": {
"freeze" : { }
}
}
}
}
}
Rollover
當(dāng)現(xiàn)有的索引滿足滾動條件之一時,將一個目標(biāo)翻轉(zhuǎn)到一個新的索引。
如果在跟隨者索引上使用滾動動作,策略的執(zhí)行會等待,直到領(lǐng)導(dǎo)者索引滾動(或以其他方式標(biāo)記完成),然后用取消關(guān)注動作將跟隨者索引轉(zhuǎn)換為普通索引。
翻轉(zhuǎn)目標(biāo)可以是一個數(shù)據(jù)流或一個索引別名。當(dāng)以數(shù)據(jù)流為目標(biāo)時,新的索引成為數(shù)據(jù)流的寫索引,其生成被遞增。
要翻轉(zhuǎn)一個索引別名,該別名和它的寫索引必須滿足以下條件:
- 索引名稱必須符合模式
^.*-\d+$
,例如(my-index-000001) -
index.lifecycle.rollover_alias
必須被配置為要翻轉(zhuǎn)的別名 - 索引必須是該別名的寫入索引
如果 my-index-000001
擁有索引別名 my_data
, 則下列配置將生效。
PUT my-index-000001
{
"settings": {
"index.lifecycle.name": "my_policy",
"index.lifecycle.rollover_alias": "my_data"
},
"aliases": {
"my_data": {
"is_write_index": true
}
}
}
必須指定至少一個翻轉(zhuǎn)條件。一個空的翻轉(zhuǎn)動作是無效的??蛇x條件如下:
- max_age
(可選的,時間單位)在達到從索引創(chuàng)建開始的最大經(jīng)過時間后,觸發(fā)滾動。經(jīng)過的時間總是從索引創(chuàng)建時間開始計算,即使索引的起始日期被配置為一個自定義日期(通過index.lifecycle.parse_origination_date
或index.lifecycle.origination_date
設(shè)置)。 - max_docs
(可選的,整數(shù))在達到指定的最大文檔數(shù)量后觸發(fā)翻轉(zhuǎn)。上次刷新后添加的文檔不包括在文檔計數(shù)中。文檔計數(shù)不包括副本分片中的文檔。 - max_size
(可選的,以字節(jié)為單位)當(dāng)索引達到一定的大小時,觸發(fā)器會翻轉(zhuǎn)。這是索引中所有主分片的總大小。復(fù)制不會被計入最大的索引大小。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover" : {
"max_age": "7d",
"max_size": "100GB"
"max_docs": 100000000
}
}
}
}
}
}
翻轉(zhuǎn)動作只有在滿足其條件之一的情況下才會完成。這意味著任何后續(xù)階段都被阻斷,直到翻轉(zhuǎn)成功。 翻轉(zhuǎn)條件會阻礙了階段轉(zhuǎn)換
Read-Only
使得索引成為只讀。
要在熱階段使用只讀動作,必須有翻轉(zhuǎn)動作。如果沒有配置翻轉(zhuǎn)動作,ILM將拒絕該策略。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"readonly" : { }
}
}
}
}
}
Shrink
將一個索引設(shè)置為只讀,并將其收縮為一個具有較少主分片的新索引。新索引的名稱是shrink-<original-index-name>
的形式。例如,如果源索引的名字是logs,縮減后的索引的名字是shrink-logs。
shrink動作將索引的所有主分片分配給一個節(jié)點,這樣它就可以調(diào)用Shrink API來收縮索引。在收縮之后,它將指向原始索引的別名交換到新的收縮后的索引。
要在熱階段使用收縮動作,必須有翻轉(zhuǎn)動作。如果沒有配置翻轉(zhuǎn)動作,ILM將拒絕該策略。
如果在跟隨者索引上使用收縮操作,策略的執(zhí)行會等待領(lǐng)導(dǎo)者索引翻轉(zhuǎn)(或者以其他方式標(biāo)記完成),然后在執(zhí)行收縮操作之前,用取消跟隨操作將跟隨者索引轉(zhuǎn)換為普通索引。
如果被管理的索引是數(shù)據(jù)流的一部分,收縮后的索引將取代數(shù)據(jù)流中的原始索引。
這個操作不能在數(shù)據(jù)流的寫索引上執(zhí)行。試圖這樣做會失敗。要收縮索引,首先手動翻轉(zhuǎn)數(shù)據(jù)流。這將創(chuàng)建一個新的寫索引。因為該索引不再是數(shù)據(jù)流的寫索引,該操作可以恢復(fù)收縮它。使用在熱階段利用翻轉(zhuǎn)動作的策略將避免這種情況,以及對未來管理索引進行手動翻轉(zhuǎn)的需要。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"shrink" : {
"number_of_shards": 1
}
}
}
}
}
}
Force Merge
強制將索引合并到指定的最大段數(shù)中。這個動作使索引成為只讀的。
要在熱階段使用forcemerge動作,必須有rollover動作。如果沒有配置翻轉(zhuǎn)動作,ILM將拒絕該策略。
forcemerge動作是最好的努力??赡軙l(fā)生一些分片正在重新定位,在這種情況下,它們將不會被合并。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"forcemerge" : {
"max_num_segments": 1
}
}
}
}
}
}
Searchable Snapshot
在配置的資源庫中獲取管理的索引的快照,并將其掛載為可搜索的快照。如果該索引是數(shù)據(jù)流的一部分,被掛載的索引將取代數(shù)據(jù)流中的原始索引。
searchable_snapshot 操作需要數(shù)據(jù)層。該操作使用index.routing.allocation.include._tier_preference
設(shè)置來將索引直接掛載到該階段相應(yīng)的數(shù)據(jù)層。例如,在冷階段,該操作將可搜索快照索引掛載到冷數(shù)據(jù)層。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"cold": {
"actions": {
"searchable_snapshot" : {
"snapshot_repository" : "backing_repo"
}
}
}
}
}
}
如果在熱階段使用了 searchable_snapshot 動作,后續(xù)階段就不能定義任何shrink, forcemerge, freeze or searchable_snapshot(在冷階段也可用)操作。
這個操作不能在數(shù)據(jù)流的寫索引上執(zhí)行。試圖這樣做會失敗。要將索引轉(zhuǎn)換為可搜索的快照,首先手動翻轉(zhuǎn)數(shù)據(jù)流。這將創(chuàng)建一個新的寫索引。因為該索引不再是數(shù)據(jù)流的寫索引,該操作可以將其轉(zhuǎn)換為可搜索快照。使用一個在熱階段利用翻轉(zhuǎn)動作的策略將避免這種情況,以及對未來管理索引進行手動翻轉(zhuǎn)的需要。
默認情況下,該快照被刪除階段中的刪除操作所刪除。要保留快照,請在刪除操作中把delete_searchable_snapshot
設(shè)置為false
。
Downsample
聚集一個時間序列(TSDS)索引,并存儲預(yù)先計算的統(tǒng)計摘要(最小、最大、總和、值_計數(shù)和平均數(shù)),用于按配置的時間間隔分組的每個指標(biāo)領(lǐng)域。例如,一個包含每10秒取樣的指標(biāo)的TSDS索引可以被降頻為每小時索引。一小時間隔內(nèi)的所有文件都被匯總并作為一個文件存儲,并存儲在向下采樣索引中。
這個操作對應(yīng)的是downsample API。
產(chǎn)生的下采樣索引的名稱是downsample-<original-index-name>-<random-uuid>
。如果ILM對一個數(shù)據(jù)流的支持索引執(zhí)行了downsample操作,那么downsample索引就會成為同一數(shù)據(jù)流的支持索引,而源索引則被刪除。
要在熱階段使用downsample動作,必須有rollover動作。如果沒有配置翻轉(zhuǎn)動作,ILM將拒絕該策略。
PUT _ilm/policy/datastream_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_docs": 1
},
"downsample": {
"fixed_interval": "1h"
}
}
}
}
}
}
- fixed_interval:(必填, 字符串) 將對數(shù)據(jù)進行下采樣的固定時間間隔。
Allocate
更新索引設(shè)置,以改變哪些節(jié)點被允許托管索引分片,并改變副本分片的數(shù)量。索引的初始分配必須手動或通過索引模板完成。
你可以配置這個動作,同時修改分配規(guī)則和副本數(shù)量,只修改分配規(guī)則,或者只修改副本數(shù)量。分配規(guī)則采用索引級別的。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"cold": {
"actions": {
"allocate" : {
"require" : {
"box_type": "cold",
"storage": "high"
}
}
}
}
}
}
}
除了require
,同樣支持include
,exclude
Migrate
通過更新index.routing.allocation.include._tier_preference
索引設(shè)置,將索引移動到與當(dāng)前階段相對應(yīng)的數(shù)據(jù)層。如果沒有與allocate
動作一起指定分配選項,ILM就會在Warm和Cold階段自動注入migrate動作。如果你指定了一個只修改索引副本數(shù)量的allocate動作,ILM會在遷移索引之前減少副本的數(shù)量。為了防止在不指定分配選項的情況下進行自動遷移,你可以明確地包括migrate動作,并將啟用選項設(shè)置為false
。
如果冷階段定義了一個可搜索的快照動作,那么遷移動作將不會在冷階段自動注入,因為被管理的索引將使用遷移動作配置的相同的_tier_preference
基礎(chǔ)設(shè)施直接掛載到目標(biāo)層。
在Warm階段,遷移動作將 index.routing.allocation.include._tier_preference
設(shè)置為 data_warm,data_hot
。這就把索引移到了Warm層的節(jié)點上。如果Warm層中沒有節(jié)點,它就會返回到HOT層中。
在冷階段,遷移動作將index.routing.allocation.include._tier_preference
設(shè)置為data_cold,data_warm,data_hot
。這就把索引移到了Cold層的節(jié)點上。如果Cold層中沒有節(jié)點,它就會返回到Warm層,如果沒有Warm層節(jié)點可用,就會返回到HOT層。
在Frozen階段是不允許進行遷移操作的。Frozen階段使用index.routing.allocation.include._tier_preference
的 data_frozen,data_cold,data_warm,data_hot
直接裝載可搜索快照。這將索引移動到Frozen層的節(jié)點上。如果Frozen層中沒有節(jié)點,它就會返回到Cold層,然后是Warm層,最后是Hot層。
在HOT階段不允許進行遷移操作。最初的索引分配是自動進行的,可以手動配置或通過索引模板配置。
以下策略中的migrate動作被禁用,allocate動作將索引分配給rack_id為1或2的節(jié)點。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"migrate" : {
"enabled": false
},
"allocate": {
"include" : {
"rack_id": "one,two"
}
}
}
}
}
}
}
Wait For Snapshot
在刪除索引之前等待指定的SLM策略被執(zhí)行。這確保了被刪除的索引的快照是可用的。文章來源:http://www.zghlxwxcb.cn/news/detail-687693.html
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"delete": {
"actions": {
"wait_for_snapshot" : {
"policy": "slm-policy-name"
}
}
}
}
}
}
Delete
永久性地刪除索引文章來源地址http://www.zghlxwxcb.cn/news/detail-687693.html
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"delete": {
"actions": {
"delete" : { }
}
}
}
}
}
到了這里,關(guān)于【ES實戰(zhàn)】索引生命周期管理(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!