elasticsearch 7.9.3知识归纳整理(五)之es的索引生命周期管理

news2024/11/7 21:14:48

es的索引生命周期管理

一、常见概念及命令

1.1、概念

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

rollover: rollover可以基于大小,文档数或使用期限创建新的索引去保存数据

1.2、DSL命令

索引的生命周期常用命令:
GET _ilm/status # 查看状态
POST _ilm/start # 启动
POST _ilm/stop # 停止
索引的策略的常用命令:
GET _ilm/policy #查看策略 或者 GET _ilm/policy/<policy_id> #查看指定策略id
DELETE _ilm/policy/<policy_id> # 删除指定策略

POST <index>/_ilm/remove # 从index中移除策略

查看索引的生命周期状态:(重点)
GET <index-name>/_ilm/explain
例如:
GET /my_cas_history_logs/_ilm/explain
查看索引的策略应用情况:(重点)
GET _iml/policy/<policy-name>
例如:GET _iml/policy/cas_login_policy
查看模板详情:(重点
GET _template/<template-name>
例如:GET /cas_log/_ilm/explain

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

PUT /_cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "1m" 
  }
}

二、生命周期的管理步骤

第一步:创建生周期 policy。

#为索引创建ilm规则(可以根据不同场景设置不同规则)
#设置ilm规则,主分片没50GB或者超过30天或数据条数超过500000000切换一次索引(三者可任意保留无需都留下),超过360天的索引自动删除
#max_size:主分片数*50GB
#common_policy 是自己取的策略名字,自己根据自己合适的取,这里只设置了hot和delete。根据自己业务需求决定是否设置warm、cold
 PUT _ilm/policy/common_policy { 	
 	"policy":{ 		
 		"phases":{ 			
 			"hot":{
				"min_age":"0ms",
				"actions":{
					"rollover":{ #滚动创建新索引的触发条件
						"max_size":"50gb",  # 当容量超过50gb(根据自己的需求设置)
						"max_docs": 500000000, # 当总条数超过500000000(根据自己的需求设置)
						"max_age":"30d" # 当时间超过30d(根据自己的需求设置)
					},
					"set_priority":{ #优先级,任一满足条件就执行
						"priority":100
					}
				} 			
			}, 			
		"delete":{#删除策略
				"min_age":"360d", #超过360天的数据就自动删除
				"actions":{
					"delete":{}
				} 			
			} 		
		} 	
	}
}

第二步:创建索引模板,模板中关联 policy 和别名。

PUT _template/<index_name>
{
	"order":0,
	"index_patterns":["<index_name>-*"], #index_name是自己的索引别名
	"settings":{
		"index.lifecycle.name":"common_policy", #这里的common_policy就是上面设置的策略
		"index.lifecycle.rollover_alias":"<index_name>",
		"index.number_of_replicas":"1", # 设置副本1
		"index.number_of_shards":"6", # 设置主分片数为6(建议分片数设置为数据节点的倍数个)
		"index.refresh_interval":"30s",
		"index.translog.durability":"async",
		"index.translog.sync_interval":"10s",
		"index.unassigned.node_left.delayed_timeout":"30m"
	},
	"mappings":{},
	"aliases":{}
}

例如:(我测试的例子)

PUT _template/my_cas_history_logs
{
	"order":0,
	"index_patterns":["my_cas_history_logs-*"],
	"settings":{
		"index.lifecycle.name":"common_policy",
		"index.lifecycle.rollover_alias":"my_cas_history_logs",
		"index.number_of_replicas":"1",
		"index.number_of_shards":"6",
		"index.refresh_interval":"30s",
		"index.translog.durability":"async",
		"index.translog.sync_interval":"10s",
		"index.unassigned.node_left.delayed_timeout":"30m"
	},
	"mappings":{},
	"aliases":{}
}

第三步:创建符合模板的起始索引,设置别名(即我们统一对外提供服务的索引名)。

#创建<index_name>索引,支持rollover的时候index名称附加年月日时分秒(将url及json里面的<index_name>替换为对应索引名)
PUT /%3C<index_name>-%7Bnow%2Fm%7Byyyy.MM.dd.HH.mm%7CAsia%2FShanghai%7D%7D-000001%3E
{
	"aliases":{
		"<index_name>":{
			"is_write_index":true
		}	
	}
}

例如:(我测试的例子)

PUT /%3Cmy_cas_history_logs-%7Bnow%2Fm%7Byyyy.MM.dd.HH.mm%7CAsia%2FShanghai%7D%7D-000001%3E
{
	"aliases":{
		"my_cas_history_logs":{
			"is_write_index":true
		}	
	}
}

按以上设置完成后就可以查看

GET /my_cas_history_logs/_search

以上就完成了一个简单的es 的生命周期的管理

三、生命周期的管理的测试

在实际开发中,测试老师问如何测试es的生命周期生效了呢?总不能等一年才看到删除效果吧?
cas_policy_logs 是我的索引名字(别名),以此为例:
#查看索引的生命周期,可以看到当前的索引的策略应用情况 GET /cas_policy_logs/_ilm/explain

 删除策略
PUT  _ilm/policy/cas-history-policy
{
  "policy": {
    "phases": {
      "delete": {
        "actions": {
          "delete" : { }
        }
      }
    }
  }
}

注意:我用这个方法没有删掉,改用kibana图形化工具的操作删除的(要先删除所有索引才能删除策略)在这里插入图片描述
设置es的ILM检测时间间隔,测试完记得改回去,默认10分钟。这仅仅是为了增加es监测频率。

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

重点:这里delete指定的是当老的索引index超过rollver的时间,后的delete指定时间才被删掉。而不是索引的创建时间。
如果是索引按指定时间rollver,那删除时间就是rollver中的max_age+delete指定时间,才被删除。而索引按容量或者文档数量(max_size、max_docs)那么就小于
max_age+delete指定时间 就被删除。
官网对于删除的定义是:Delete the index 30d days after rollover.(30d是这里设置的删除时间)
总结来说就是:当这个索引不再写入数据(即创建新索引)开始算在delete设定时间后删除

查看生命周期的重要命令:

查看索引的生命周期状态:(重点)
GET <index-name>/_ilm/explain
例如:
GET /my_cas_history_logs/_ilm/explain
查看索引的策略应用情况:(重点)
GET _iml/policy/<policy-name>
例如:GET _iml/policy/cas_login_policy
查看模板详情:(重点
GET _template/<template-name>
例如:GET /cas_log/_ilm/explain

删完之后重新建策略即可,设置调试,这样就完成了测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯基础题】2021年省赛填空题—卡片

&#x1f451;专栏内容&#xff1a;蓝桥杯刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录一、题目背景二、题目描述三、题目分析1.检查思路2.思路优化四、代码汇总1.C语言代码2. C代码3.运行结果五、总结1.枚举思…

“强鹰”会议纪要发布,不会停止加息?风险资产恐将承压

美联储发布了去年12月的会议纪要&#xff0c;详细揭露了货币政策制定者对经济和加息路径的最新研判&#xff0c;继续展现偏鹰的论调和立场。 纪要显示&#xff0c;美联储官员致力于抗击通货膨胀&#xff0c;并预计在取得更多进展之前利率将继续上升&#xff0c;并维持“一段时间…

82.Zabbix之Linux服务器agent监控(不需要联网)

Zabbix版本:6.2.3 官网上下载对应的agent

C#中的多线程(一)

一、多线程的术语 在学习多线程之前需要先理解有关多线程的术语。 CPU&#xff08;中央处理器&#xff09;或内核/核心是实际执行程序的硬件单元。许多现代CPU都支持同时多线程&#xff08;Intel称之为超线程&#xff09;&#xff0c;即使一个CPU能表现为多个「虚拟」CPU。进…

Linux安装xFormers教程

参考文章&#xff1a;手把手教你在linux中手动编译并安装xformers 作者&#xff1a;青空朝颜モ出处&#xff1a;bilibili 官方安装方法 官方仓库传送门&#xff1a;https://github.com/facebookresearch/xformers.git 官方给了两种方式安装xFormers&#xff0c;这里给出官方仓…

数字化转型之数字化和业务化论证

引言 数据业务化的本质是数据的产品化、商业化与价值化。主要强调产品化、新业务和专业化运作,也就是以数据为主要内容和生产原料,打造数据产品,按照产品定义、研发、定价、包装和推广的套路进行商业化运作,把数据产品打造成能为企业创收的新兴业务。 数字化是信息技术发…

NodeJs中使用Express开发web项目

文章目录1. web开发模式1.1 服务端渲染的Web开发模式1.2 前后端分离的Web开发模式1.3 如何选择web开发模式2. 身份认证2.1 Session认证机制2.1.1 cookie2.1.2 cookie认证2.1.3 在Express中使用Session认证2.1.4 Session认证的局限性2.2 JWT认证机制2.2.1 JWT组成部分2.2.2 在No…

mysql优化实战

空气质量小时索引顺序先站点后时间 索引情况 根据时间范围查询索引失效 EXPLAIN SELECT station_code, station_name, data_time, aqi, pm25, pm10, o3, no2, so2, co, primary_pollutant, create_date FROM wuhaiyizhangtu.t_air_pollution where data_time between 2022-1…

Node.js 中 session验证登录

在前一篇内容中讲到这个cookie实现验证登录&#xff0c;cookie是存储在客户端的&#xff0c;而session是存储在服务器的&#xff0c;相比较session的安全性会更高&#xff0c;session对象存储特定用户会话所需要的属性以及配置信息&#xff0c;服务通过session对象将用户的信息…

【力扣刷题】day3-4. 寻找两个正序数组的中位数

力扣刷题笔记day3 4. 寻找两个正序数组的中位数 题意 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 输入&#xff1a;nums1 [1,3], nums2 …

【通讯录管理系统】C++全栈体系(六)

通讯录管理系统 第一章 系统需求 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 系统中需要实现的功能如下&#xff1a; 添加联系人&#xff1a;向通讯录中添加新人&#xff0c;信息包括&#xff08;姓名、性别、年龄、联系电话、…

人工智能算法模型--Alpha-Beta剪枝算法学习笔记

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; (*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &a…

【华为机试真题详解】不含 101 的数【2022 Q4 | 100分】

文章目录前言题目描述输入描述输出描述示例 1示例2题目解析参考代码前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试&#xff0c;期间有想了解的可以私信我&#xff0c;我会尽可能帮您解答&#xff0c;也可…

逻辑漏洞渗透与攻防(五)之权限类逻辑漏洞

目录 权限类逻辑漏洞 平行权限跨越 基于用户身份ID 基于对象ID 基于文件名 垂直权限跨越 未经授权访问 权限类逻辑漏洞 越权漏洞又分为平行越权&#xff0c;垂直越权和交叉越权。 平行越权&#xff1a;权限类型不变&#xff0c;权限ID改变&#xff0c;垂直越权&#xff1…

SQL ORDER BY 关键字

ORDER BY 关键字用于对结果集进行排序。 SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序&#xff0c;您可以使用 DESC 关键字。 SQL ORDER BY 语法 SELECT c…

太适合小白了!11招,高手都在用的数据分析招式!

阅读本文大概需要3分钟菜鸟独白用Python来玩转数据分析实在是太爽了&#xff0c;因为有强大的Pandas来处理数据非常方便&#xff0c;我个人对数据分析情有独钟&#xff0c;探索数据的秘密非常好玩&#xff01;前段时间写过一篇小白学数据分析入门招式&#xff0c;但是进阶的部分…

蓝桥杯基础练习合集九 1.回文词2.猜数字游戏的提示3.生成元4.环状序列5.刽子手游戏

目录 1.回文词 2.猜数字游戏的提示 3.生成元 4.环状序列 5.刽子手游戏 1.回文词 问题描述 输入一个字符串&#xff0c;判断它是否为回文串以及镜像串。输入字符串保证不含数字0。所谓回文串&#xff0c;就是反转以后和原串相同&#xff0c;如abba和madam。所有镜像串&…

docker 安装mysql5.7

拉取镜像 非常快 因为上一篇安装的是阿里云的centos7并且配置了阿里云的镜像加速 docker pull mysql:5.7 拉取成功检验 启动镜像 docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASS…

软件测试行业未来职业规划是什么

随着软件工程活动的不断演化&#xff0c;软件测试岗位已经成为了软件开发中极其重要的一个环节&#xff0c;因而市场对于软件测试人才的需求也在日益扩大。相信不少想入行软件测试的小伙伴都难免会有这样的疑问&#xff0c;软件测试行业究竟怎么样&#xff1f;职业发展应该如何…

代码层面解决 The channelMax limit is reached. Try later.

该问题也是非常的严重&#xff0c;没有合适处理即导致消息丢失&#xff1b; 解决方案 设置连接工厂配置 CachingConnectionFactory connectionFactory new CachingConnectionFactory();connectionFactory.setChannelCheckoutTimeout(30000);解析 该报错根本原因是**”连接池…