ES 生命周期管理

一 .概念

ILM定义了四个生命周期阶段:
Hot:正在积极地更新和查询索引。
Warm:不再更新索引,但仍在查询。
cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。
Delete:不再需要该索引,可以安全地将其删除

仅仅在 Hot阶段 可以设置 rollover滚动

在实验中可以修改设置,来缩短ILM检测时间间隔。ILM定期运行(indices.lifecycle.poll_interval),默认是10分钟,检查索引是否符合策略标准,并执行所需的任何步骤

java 复制代码
PUT /_cluster/settings

{ "transient": { "indices.lifecycle.poll_interval": "1m" } }

参数的设置:满足任意一个创建新的索引

HOT

WARM

Delete

二. 实战

1 .创建生命周期策略模板:PUT 请求

http://localhost:9099/_ilm/policy/my_index_rollover_policy

"max_docs": 5000000 设置超过500万是创建新的索引,实际测试可以设置小一点

java 复制代码
{
    "policy": {
        "phases": {
            "hot": {
                "actions": {
                    "rollover": {
                        "max_docs": 5000000
                    },
                    "set_priority": {
                        "priority": 100
                    }
                }
            },
            "warm": {
                "min_age": "30d",
                "actions": {
                    "forcemerge": {
                        "max_num_segments": 1
                    },
                    "shrink": {
                        "number_of_shards": 1
                    },
                    "allocate": {
                        "number_of_replicas": 1
                    },
                    "set_priority": {
                        "priority": 50
                    }
                }
            },
            "cold": {
                "min_age": "90d",
                "actions": {
                    "freeze": {},
                    "allocate": {
                        "require": {
                            "type": "cold"
                        }
                    },
                    "set_priority": {
                        "priority": 10
                    }
                }
            },
            "delete": {
                "min_age": "3650d",
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}
  1. 创建索引模板(日志统计索引) PUT 请求:

http://localhost:9099/_template/my_statistic_log

java 复制代码
{
    "index_patterns": [
        "my_statistic_log-*"
    ],
    "settings": {
        "index.number_of_shards": 5,
        "index.number_of_replicas": 1,
        "refresh_interval": "60s",
        "index.lifecycle.name": "my_index_rollover_policy",
        "index.lifecycle.rollover_alias": "statistic_log_write"
    },
    "aliases": {
        "statistic_log_read": {}
    },
    "mappings": {
        "log": {
            "dynamic": "strict",
            "_field_names": {
                "enabled": false
            },
            "dynamic_templates": [
                {
                    "date": {
                        "match": "*Date",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "strings": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                },
                {
                    "long_or_text": {
                        "match": "*Time",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "dataFormat": {
                        "match": "*Date",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "timeFormat": {
                        "match": "*Time",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "noAnalyzed": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                }
            ],
            "properties": {
                "area": {
                    "type": "keyword"
                },
                "desc": {
                    "type": "keyword"
                },
                "hour": {
                    "type": "integer"
                },
                "day": {
                    "type": "integer"
                },
                "startTime": {
                    "type": "date",
                    "format": "yyyy-MM-dd HH:mm:ss"
                },
                "totalCount": {
                    "type": "long"
                }
            }
        }
    }
}
  1. 根据索引模板创建起始索引(日志统计索引)

put 请求: http://localhost:9099/my_statistic_log-000001

java 复制代码
{
    
    "aliases": {
        "statistic_log_write": {
            "is_write_index": true
        }
    }
}
  1. 查看索引生效:GET请求

http://localhost:9099/my_statistic_log-000001/_ilm/explain

https://www.elastic.co/guide/en/elasticsearch/reference/6.8/_setting_up_a_new_policy.html

相关推荐
INFINI Labs12 分钟前
Elasticsearch filter context 的使用原理
大数据·elasticsearch·jenkins·filter·querycache
chengpei14713 分钟前
Elasticsearch介绍及安装部署
elasticsearch·搜索引擎
Ahern_36 分钟前
Oracle 普通表至分区表的分区交换
大数据·数据库·sql·oracle
李昊哲小课1 小时前
deepin 安装 kafka
大数据·分布式·zookeeper·数据分析·kafka
FIN66682 小时前
张剑教授:乳腺癌小红书(2025年版)更新,芦康沙妥珠单抗成功进入TNBC二线推荐,彰显乳腺癌诊疗的“中国力量”
大数据·搜索引擎·健康医疗
core5126 小时前
flink sink doris
大数据·mysql·flink·doris·存储·sink·过程正常
武子康9 小时前
大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
java·大数据·数据仓库·hive·hadoop·架构
lucky_syq10 小时前
Flume和Kafka的区别?
大数据·kafka·flume
AI_NEW_COME10 小时前
构建全方位大健康零售帮助中心:提升服务与体验
大数据·人工智能
it噩梦11 小时前
es 中 terms set 使用
大数据·elasticsearch