elasticsearch ilm - yaokun123/php-wiki GitHub Wiki
es索引生命周期
一、什么是Elasticsearch索引生命周期管理
Elasticsearch索引生命周期管理指:Elasticsearch从设置、创建、打开、关闭、删除的全生命周期过程的管理。 Elasticsearch生产环境中一般采用多索引结合基于时间、基于空间的横向扩展的方式存储数据,随着数据量的增多,不用修改索引的底层架构逻辑。
二、索引生命周期管理为什么重要
索引管理决定Elasticsearch鲁棒性、高可用性。 索引管理和搜索、插入性能也密切相关。 实际场景例子:100节点的集群中某一个节点数据丢失后,GET /_cat/nodes?v 接口的返回时延时延非常大,接近5-8s。搜索、聚合的性能更不必说。 原因:节点丢失后,ES会自动复制分片到新的节点中去,但是该丢失节点的shard非常大(几百个GB甚至上TB),集群当时的写入压力也非常大。这么大量级的数据拷贝和实时写入,最终导致延时会非常大。
三、高可用的索引管理初探
Elasticsearch5.X之后的版本已经推出:新增了一个Rollover API。Rollover API解决的是以日期作为索引名称的索引大小不均衡的问题。
Rollover API对于日志类的数据非常有用,一般我们按天来对索引进行分割(数据量更大还能进一步拆分),没有Rollover之前,需要在程序里设置一个自动生成索引的模板, 相比于模板,Rollover API是更为简洁的方式。
3.1、RollOver 的定义
当现有索引被认为太大或太旧时,滚动索引API将别名滚动到新索引。该API接受一个别名和一个条件列表。别名必须只指向一个索引。如果索引满足指定条件,则创建一个新索引,并将别名切换到指向新索引的位置。 6.XRollover支持的三种条件是:
- 索引存储的最长时间。如: “max_age”: “7d”
- 索引支持的最大文档数。如:“max_docs”: 1000
- 索引最大磁盘空间大小。“max_size”: “5gb” (5.X版本不支持"max_size": "5gb"磁盘大小的方式)
3.2、XRollOverAPI调用方式 - 基于序号的索引管理
步骤1:创建索引(注意序号)
PUT /logs-000001
{
"aliases":{
"logs_write": {}
}
}
步骤2:指定RollOver规则。
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_age": "1d",
"max_size": "50gb"
},
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "366d",
"actions": {
"delete": {}
}
}
}
}
}
参考如下: