一、前言

  es可以用来存储日志,一般日志存储只是短期保存,超过一定时间日志要是能自动删除最好,这样保证索引文档不会过多,查询时效性也能得到保证。本文参考的官网地址是:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/getting-started-index-lifecycle-management.html  。索引的生命周期分为四个阶段:HOT->WARM->COLD->DELETE。

上面除了HOT为必须的阶段外,其他为非必须阶段,可以任意选择配置。因为日志索引只要满足自己删除功能,所以下文只配置了HOT与DELETE阶段。

二、配置

  配置自己删除功能,必须配置策略(policy)、索引模版(template)、索引(index)。上述配置缺一不可。

  1)配置策略

PUT _ilm/policy/datastream_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover":{
"max_docx":1
}
}
},
"delete": {
"min_age": "30s",
"actions": {
"delete": {}
}
}
}
}
}

采用PUT方式向es创建一个名为“datastream_policy“的策略,"_ilm/policy"为固定写法。如果是使用postman,选择PUT请求方式,地址为:http://ip:port/_ilm/policy/datastream_policy ,HOT阶段:当日志索引超过1条时就会发生rollover,此处设置1条主要是为了测试方便。DELETE阶段:超过30秒时执行删除。

hot->actions->rollover还支持其他维度的控制,比如:

"max_size": "50GB"
"max_age": "30d"

  2)配置索引模版

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

创建一个索引模版,索引以datastream-开头的自动采用settings的配置。"index.lifecycle.name"意为采用”datastream_policy“的策略,"index.lifecycle.rollover_alias"意为创建使用该模版创建的索引统一用”datastream“的别名进行管理。

  

  3)创建索引

PUT datastream-000001
{
"aliases": {
"datastream": {
"is_write_index": true
}
}
}

创建一个开始的索引,并设置索引可写入。

  4)配置lifecycle检测时间

PUT /_cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval": "10s"
}
}

默认为十分钟,为了测试看效果,改为10秒钟。

  5)验证功能

  向别名为"datastream"的索引中进行写入多条数据

PUT /datastream/_doc
{
"message":"hello-01"
}

  索引采用别名索引。

写入后,es根据配置的lifecycle时间进行rollover。用以下命令查看索引rollover进度

  

GET datastream-*/_ilm/explain

等待30秒后,返回的数据如下:

{
"indices": {
"datastream-000002": {
"index": "datastream-000002",
"managed": true,
"policy": "datastream_policy",
"lifecycle_date_millis": 1587608411208,
"age": "1.08m",
"phase": "hot",
"phase_time_millis": 1587608411441,
"action": "rollover",
"action_time_millis": 1587608471383,
"step": "check-rollover-ready",
"step_time_millis": 1587608471383,
"phase_execution": {
"policy": "datastream_policy",
"phase_definition": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_docs": 1
}
}
},
"version": 1,
"modified_date_in_millis": 1587608224989
}
},
"datastream-000001": {
"index": "datastream-000001",
"managed": true,
"policy": "datastream_policy",
"lifecycle_date_millis": 1587608411268,
"age": "1.08m",
"phase": "delete",
"phase_time_millis": 1587608471345,
"action": "delete",
"action_time_millis": 1587608471345,
"step": "wait-for-shard-history-leases",
"step_time_millis": 1587608471345,
"phase_execution": {
"policy": "datastream_policy",
"phase_definition": {
"min_age": "60s",
"actions": {
"delete": {}
}
},
"version": 1,
"modified_date_in_millis": 1587608224989
}
}
}
}

索引自动创建了一个新的"datastream-000002",旧的索引”datastream-000001“ action变成DELETE。

再过一段时间再次查看索引

GET datastream-*/_ilm/explain

查看结果:

{
"indices": {
"datastream-000002": {
"index": "datastream-000002",
"managed": true,
"policy": "datastream_policy",
"lifecycle_date_millis": 1587608411208,
"age": "2.8m",
"phase": "hot",
"phase_time_millis": 1587608411441,
"action": "rollover",
"action_time_millis": 1587608471383,
"step": "check-rollover-ready",
"step_time_millis": 1587608471383,
"phase_execution": {
"policy": "datastream_policy",
"phase_definition": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_docs": 1
}
}
},
"version": 1,
"modified_date_in_millis": 1587608224989
}
}
}
}

旧的索引进行了删除。在做日志查询时,我们只需要使用别名”datastream“进行日志查询即可,es便可无感知完成日志存储删除动作。

ES7.5.2索引生命周期管理(附操作示例)的更多相关文章

  1. Elastic 使用索引生命周期管理实现热温冷架构

    Elastic: 使用索引生命周期管理实现热温冷架构 索引生命周期管理 (ILM) 是在 Elasticsearch 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能.ILM 是 Elast ...

  2. 这么简单的ES索引生命周期管理,不了解一下吗~

    对于日志或指标(metric)类时序性强的ES索引,因为数据量大,并且写入和查询大多都是近期时间内的数据.我们可以采用hot-warm-cold架构将索引数据切分成hot/warm/cold的索引.h ...

  3. ElasticSearch——索引生命周期管理

    从ES6.6开始,Elasticsearch提供索引生命周期管理功能,索引生命周期管理可以通过API或者kibana界面配置,详情参考[index-lifecycle-management] 本文仅通 ...

  4. Elasticsearch7.X ILM索引生命周期管理(冷热分离)

    Elasticsearch7.X ILM索引生命周期管理(冷热分离) 一.“索引生命周期管理”概述 Elasticsearch索引生命周期管理指:Elasticsearch从设置.创建.打开.关闭.删 ...

  5. Elasticsearch索引生命周期管理方案

    一.前言 在 Elasticsearch 的日常中,有很多如存储 系统日志.行为数据等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长 索引 的数量也会持续增长,然而这些场景基本上只有 ...

  6. Elasticsearch 索引生命周期管理 ILM 实战指南

    文章转载自:https://mp.weixin.qq.com/s/7VQd5sKt_PH56PFnCrUOHQ 1.什么是索引生命周期 在基于日志.指标.实时时间序列的大型系统中,集群的索引也具备类似 ...

  7. ES 7.13版本设置索引模板和索引生命周期管理

    第一步:索引管理中查看都有哪些索引文件,然后添加索引模式(后面的日期用*表示) 第二步:索引生命周期管理 自带的有一个log,就使用这个,不用再新建了,根据需求修改里面的配置就行了 第三步:添加索引模 ...

  8. Elasticsearch索引生命周期管理探索

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484130&idx=1&sn=454f199 ...

  9. Logstash & 索引生命周期管理(ILM)

    Grok语法 Grok是通过模式匹配的方式来识别日志中的数据,可以把Grok插件简单理解为升级版本的正则表达式.它拥有更多的模式,默认,Logstash拥有120个模式.如果这些模式不满足我们解析日志 ...

  10. ELK 索引生命周期管理

    kibana 索引配置 管理索引 点击设置 --- Elasticsearch 的 Index management 可以查看 elk 生成的所有索引 (设置,Elasticsearch ,管理) 配 ...

随机推荐

  1. .net core 3.1 + 动态执行C#

    1.使用 using Microsoft.CodeAnalysis.CSharp.Scripting;using Microsoft.CodeAnalysis.Scripting; 2.定义 Rosl ...

  2. DownUnderCTF 2024 - Forensics

    DownUnderCTF 2024 - Forensics Baby's First Forensics 他们整个上午都在试图破坏我们的基础设施!他们正试图获得更多关于我们秘密袋鼠的信息!我们需要您的 ...

  3. Restful和WebService区别

    简介 Restful是一种架构风格,其核心是面向资源,更简单: 而webService底层SOAP协议,主要核心是面向活动: 两个都是通过web请求调用接口 RESTful是什么 REST就是(REp ...

  4. Spring声明事务和分布式事务处理技术

    Spring声明事务的两种方式 方式一.传统的编程式事务管理: 需要手动编写代码在业务层注入事务管理模板(一般不用) 方式二.基于 AOP 技术实现的声明式事务管理: Spring 声明式事务管理在底 ...

  5. 基于表单登录的cookies登录

    1.基于表单登录的cookies登录 In [ ]: import requests import matplotlib.pyplot as plt from http.cookiejar impor ...

  6. mysql 临时表的好处

    客户端新建了一个会话,这个会话只是服务器与客户端1对1的关系,客户端可能在服务端建立一个临时表,满足客户端处理某些事务的需求,当客户端退出会话后,这个临时表自动drop,没有任何数据信息占用数据库空间 ...

  7. [oeasy]python0081_ANSI序列由来_终端机_VT100_DEC_VT选项_终端控制序列

    更多颜色 回忆上次内容 上次 首先了解了RGB颜色设置 可以把一些抽象的色彩名字 落实到具体的 RGB颜色 计算机所做的一切 其实就是量化.编码 把生活的一切都进行数字化 标准 是ANSI制定的 这个 ...

  8. oeasy教您玩转vim - 42 - # 剪切进入

    ​ 剪切进入 回忆上节课内容 上次我们了解到了各种寄存器 :reg 无名寄存器"" 数字寄存器"0-"9 行内删除专用寄存器"- 指定寄存器" ...

  9. oeasy教您玩转vim - 37 - # 删除字符

    ​ 通过十进制的 ascii 值输入字符 在输入模式下 输入 ctrl + v 然后再输入 065 通过十六进制的 unicode 在输入模式下 输入 ctrl + v 然后再输入 u2642 就可以 ...

  10. .NET Core 3.x 基于Autofac的AOP缓存

    一.依赖包 二.定义一个简单的缓存接口 /// <summary> /// 简单的缓存接口,只有查询和添加,以后会进行扩展 /// </summary> public inte ...