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": {}
                }
            }
        }
    }
}

参考如下:

https://blog.csdn.net/laoyang360/article/details/81432646