首页 > IT职业 > IT职场 > ES中的索引生命周期管理
ILM:索引生命周期管理,即Manage the index lifecycle。
使用
ILM应确保集群中的所有节点运行的是同一个版本,不然无法保证他们会按预期工作。
索引的生命周期有四个阶段:
Hot:索引更新和查询很活跃。Warm:索引不再更新,但仍然有查询Cold:索引不再更新,只有很少的查询,而且查询速度也很慢Delete:索引不需要了,可以安全的删除索引的生命周期策略指定了适用于哪些阶段、在每个阶段中执行哪些操作以及何时在各个阶段之间进行转换。
当索引满足一定条件之后,将不再写入数据,而是自动创建一个索引,所有的数据将写入新的索引。
使用滚动索引能够:
hot节点上提升高接收速率。warm节点搜索性能。cold节点上。官方推荐使用data stream数据流来管理时间序列数据。每个数据流都需要一个索引模板,其中包括:
date或date_nanos数据类型。并且包含在索引到该数据流的每个文档中。数据流专为追加数据而设计,其中数据流名称可用作操作(读取、写入、翻转、收缩等)目标。如果需要更新数据,可以使用索引别名来管理时间序列数据。
ILM会根据你的配置:索引大小、文档数量、所在阶段 ,当满足这些条件时,自动实现rollover。
ILM就能检测出当前索引正在使用上一个版本的策略,需要将索引策略更新到最新版本。allocate:将分片移动到具有不同性能特征的节点上,并减少副本的数量。delete:永久移除索引。force merge:减少索引段的数量并清除已删除的文档。使索引为只读。freeze:冻结索引以最大程度减少其内存的占用量。read only:阻止对索引的写操作。rollover:删除索引作为过渡别名的写索引,然后开始索引到新索引。set priority:降低索引在生命周期中的优先级,以确保首先恢复热索引。shrink:通过将索引缩小为新索引来减少主分片的数量。unfollow:将关注者索引转换为常规索引。在进行滚动或收缩操作之前自动执行。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
设置index.lifecycle.indexing_complete为true。
举个例子,如果你要改变一系列新索引的名称,并保留之前根据你配置的策略产生的索引数据,你可以:
write索引更改为bootstrapped索引。index.lifecycle.indexing_complete的值为true。获取最新文章,可关注博客地址:https://jenkinwang.github.io,
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3173/viewspace-2826190/ ,如需转载,请注明出处,否则将追究法律责任。