索引的生命周期管理
1:简介
我们可以使用索引生命周期管理API:ILM实现管理。
Elasticsearch索引生命周期管理指:从设置、创建、打开、关闭、删除的全生命周期过程的管理
2:索引生命周期
1:索引生命周期四个阶段:
Hot:正在写入和查询索引。
Warm:索引不再写入数据,但仍在查询中。
Cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。
Delete:不再需要该索引,可以安全地将其删除
1:hot写入阶段
主要包括以下阶段
回滚:当现有数据达到一定规模,文档的数目。过渡触发可以是索引别名或数据流
只读:标记旧索引为只读状态,并最大程度地减少其内存占用量
收缩:根据旧索引数据调整新索引分片数,减少索引中主碎片的数量。
强制合并:手动触发合并以减少索引每个分片中的段数,并释放已删除文档所使用的空间。
2:设定索引的管理规则
PUT _ilm/policy/datastream_policy //datastream_policy 为规则起名
{
"policy": {
"phases": {
"hot": { //索引周期1:写入阶段
"actions": { //hot写入阶段的动作
"rollover": { //四个动作
"max_size": "50GB", //分片最大50G
"max_age": "30d"
}
}
},
"warm": { //
"min_age": "1d",
"actions": {
"allocate": {
"number_of_replicas": 1
}
}
},
"delete": { //索引周期2:删除阶段
"min_age": "90d", //删除规则
"actions": {
"delete": {}
}
}
}
}
}
3:使用规则
我们可以将制定的索引管理规则用于我能的模板,更好的管理索引
PUT _template/datastream_template
{
"index_patterns": ["datastream-*"], //使用于什么样的索引?索引名模糊匹配
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "datastream_policy", //管理索引的规则名
"index.lifecycle.rollover_alias": "datastream" //适用时创建新的索引,命名规则
}
}