ES中的索引生命周期管理

ILM

ILM:索引生命周期管理,即Manage the index lifecycle

使用ILM应确保集群中的所有节点运行的是同一个版本,不然无法保证他们会按预期工作。

索引生命周期

索引的生命周期有四个阶段:

  1. Hot:索引更新和查询很活跃。
  2. Warm:索引不再更新,但仍然有查询
  3. Cold:索引不再更新,只有很少的查询,而且查询速度也很慢
  4. Delete:索引不需要了,可以安全的删除

索引的生命周期策略指定了适用于哪些阶段、在每个阶段中执行哪些操作以及何时在各个阶段之间进行转换。

rollover

当索引满足一定条件之后,将不再写入数据,而是自动创建一个索引,所有的数据将写入新的索引。

使用滚动索引能够:

  1. 优化活跃索引,在高性能hot节点上提升高接收速率。
  2. 优化warm节点搜索性能。
  3. 将旧的、访问频率低的数据转移到成本低的cold节点上。
  4. 通过删除整个索引,根据索引保留策略删除数据。

官方推荐使用data stream数据流来管理时间序列数据。每个数据流都需要一个索引模板,其中包括:

  1. 数据流的名称或通配符(*)模式。
  2. 数据流时间戳字段。该字段必须映射为datedate_nanos数据类型。并且包含在索引到该数据流的每个文档中。
  3. 当创建每一个索引时将应用索引模板的映射和设置。

数据流专为追加数据而设计,其中数据流名称可用作操作(读取、写入、翻转、收缩等)目标。如果需要更新数据,可以使用索引别名来管理时间序列数据。

自动 rollover

ILM会根据你的配置:索引大小文档数量所在阶段 ,当满足这些条件时,自动实现rollover

索引生命周期策略的更新

  1. 生命周期策略被应用到索引上时,索引会获取当前策略的最新版本号。如果更新了当前策略,版本号会发生冲突,ILM就能检测出当前索引正在使用上一个版本的策略,需要将索引策略更新到最新版本。
  2. 如果将不同的策略应用到已经被管理的索引上时,索引还是使用先前管理策略中的缓存定义来完成当前阶段。直到进入下一个阶段,索引才会应用新的管理策略。

索引生命周期操作

  1. allocate:将分片移动到具有不同性能特征的节点上,并减少副本的数量。
  2. delete:永久移除索引。
  3. force merge:减少索引段的数量并清除已删除的文档。使索引为只读
  4. freeze:冻结索引以最大程度减少其内存的占用量。
  5. read only:阻止对索引的写操作。
  6. rollover:删除索引作为过渡别名的写索引,然后开始索引到新索引。
  7. set priority:降低索引在生命周期中的优先级,以确保首先恢复热索引。
  8. shrink:通过将索引缩小为新索引来减少主分片的数量。
  9. unfollow:将关注者索引转换为常规索引。在进行滚动或收缩操作之前自动执行。
  10. wait for snapshot:删除索引之前,确保快照存在。

配置生命周期策略

要让ILM管理索引,必须要在index.lifecycle.name索引设置中指定有效的策略。

要为滚动索引创建生命周期策略,你要创建该策略并把它加入到索引模板中。

创建生命周期策略

可以通过Kibana管理页面设置,也可以通过API设置。

PUT _ilm/policy/my_policy
{
    "policy": {
        "phases": {
            "hot": {
                "actions": {
                    "rollover": {
                        "max_size": "25GB"
                    }
                }
            },
            {
                "delete": {
                    "min_age": "30d",
                    "actions": {
                        "delete": {}
                    }
                }
            }
        }
    }
}
将生命周期策略应用到索引模板中

可以通过Kibana管理页面设置,也可以通过API设置。

PUT _index_template/my_template
{
    "index_patterns": ["test-*"],
    "template": {
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 1,
            "index.lifecycle.name": "my_policy",
            "index.lifecycle.rollover_alias": "test-alias"
        }
    }
}
创建一个初始被管理的索引

如果要给滚动索引设置策略,需要手动创建第一个被该策略管理的索引,并指定为可写索引。

索引的名称必须跟索引模板里定义的模式相匹配,并且以数字结尾。

PUT test-000001
{
    "aliases": {
        "test-alias": {
            "is_write_index": true
        }
    }
}
手动应用生命周期策略

你可以在创建索引的时候指定一个策略,也可以直接将策略应用到一个已经存在的索引上通过Kibana管理或者更新设置的API。一旦你应用了策略,ILM立即会开始管理该索引。

PUT test-index
{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "index.lifecycle.name": "my_police"
    }
}
将策略应用于多个索引
PUT mylogs-pre-ilm*/_settings
{
    "index": {
        "lifecycle": {
            "name": "mylogs_policy_existing"
        }
    }
}

解决生命周期策略运行报错

查看错误:

GET /my-index-000001/_ilm/explain   

重新运行报错的一步:

POST /my-index-000001/_ilm/retry

开启和终止索引生命周期管理

查看ILM状态:

GET _ilm/status

# 返回结果
{
    "operation_mode": "RUNNING"
}

终止ILM

POST _ilm/stop

# 返回结果
{
    "operation_mode": "STOPPING"
}

{
    "operation_mode": "STOPPED"
}

开启ILM

POST _ilm/start

跳过rollover

设置index.lifecycle.indexing_completetrue

举个例子,如果你要改变一系列新索引的名称,并保留之前根据你配置的策略产生的索引数据,你可以:

  1. 为新的索引模式创建一个模板,并使用之前相同的策略。
  2. 根据新的模板创建一个初始索引。
  3. 使用索引别名API将别名的write索引更改为bootstrapped索引。
  4. 设置旧索引的index.lifecycle.indexing_complete的值为true

相关连接:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/index-lifecycle-management.html


获取最新文章,可关注博客地址:https://jenkinwang.github.io/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342