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

这篇具有很好参考价值的文章主要介绍了elasticsearch 7.9.3知识归纳整理(五)之 es的索引生命周期管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

es的索引生命周期管理

一、常见概念及命令

1.1、概念

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

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

1.2、DSL命令

索引的生命周期常用命令:
GET _ilm/status # 查看状态
POST _ilm/start # 启动
POST _ilm/stop # 停止
POST <index>/_ilm/remove # 从index中移除策略


查看索引的生命周期状态:(重点)
GET <index-name>/_ilm/explain
例如:
GET /my_cas_history_logs/_ilm/explain


GET _ilm/policy #查看全局策略
查看索引的策略应用情况:(重点)
GET _iml/policy/<policy-name>
例如:GET _iml/policy/cas_login_policy
删除策略
DELETE _ilm/policy/<policy_id> # 删除指定策略
例如:DELETE _ilm/policy/pcsp_log_record_policy # 删除指定策略


模板
查看模板详情:(重点
GET _template/<template-name>
例如:GET _template/pcsp_log_record_template
删除模板
DELETE _template/<template-name>
l例如:DELETE _template/pcsp_log_record_template

在实验中可以修改设置,来缩短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":{}
				} 			
			} 		
		} 	
	}
}

实战演练:

PUT _ilm/policy/pcsp_log_record_policy
{
	"policy":{
		"phases":{
			"hot":{
				"min_age":"0ms",
				"actions":{
					"rollover":{
						"max_size":"50gb",
						"max_age":"2m",
						"max_docs":5
					},
					"set_priority":{
						"priority":100
					}
				}
			},
			"delete":{
				"min_age":"5m",
				"actions":{
					"delete":{}
				}
			}
		}
	}
}
 
第二步:创建索引模板,模板中关联 policy 和别名。
PUT _template/<template_name>
{
	"order":0,
	"index_patterns":["<index_name>-*"], #index_name是自己的索引别名
	"settings":{
		"index.lifecycle.name":"common_policy", #这里的common_policy就是上面设置的策略
		"index.lifecycle.rollover_alias":"<index_name>", #指定索引的rollover别名
		"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/pcsp_log_record_template
{
	"order":0,
	"index_patterns":["pcsp_log_record-*"],
	"settings":{
		"index.lifecycle.name":"pcsp_log_record_policy",
		"index.lifecycle.rollover_alias":"pcsp_log_record",
		"index.number_of_replicas":"1",
		"index.number_of_shards":"1",
		"index.refresh_interval":"30s",
		"index.translog.durability":"async",
		"index.translog.sync_interval":"10s",
		"index.unassigned.node_left.delayed_timeout":"30m"
	},
"mappings": {
    "properties": {
      "address": {
        "type": "keyword"
      },
      "age": {
        "type": "long"
      },
      "name": {
        "type": "text",
		    "analyzer": "ik_max_word"
      }
    }
    },
	"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 /%3Cpcsp_log_record-%7Bnow%2Fm%7Byyyy.MM.dd.HH.mm%7CAsia%2FShanghai%7D%7D-000001%3E
{
	"aliases":{
		"pcsp_log_record":{
			"is_write_index":true
		}	
	}
}

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

测试插入数据:

POST /pcsp_log_record/_doc
 { 
 "name": "王者荣耀1", 
 "age": 19, 
 "address": "长沙岳麓山"
 }
GET /my_cas_history_logs/_search

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

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

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

 删除策略

删除索引
DELETE pcsp_history-3.09.11.17.24-0004
删除策略
DELET _ilm/policy/pcsp_history_policy
删除模板
DELET _template/pcsp_history

注意:如果用这个方法没有删掉,可以改用kibana图形化工具的操作删除的(要先删除所有索引才能删除策略es索引生命周期管理,elasticsearch,elasticsearch,大数据
设置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

删完之后重新建策略即可,设置调试,这样就完成了测试。文章来源地址https://www.toymoban.com/news/detail-816206.html

到了这里,关于elasticsearch 7.9.3知识归纳整理(五)之 es的索引生命周期管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch 7.9.3知识归纳整理(六)之 kibana图形化操作es指南

    一、创建用户,角色和权限指引 1.创建角色 1.1 在kibana首页点击Manage and Administer the Elastic Stack下的securitys settings 1.2 点击左侧Security 下的roles 1.3 点击右上角的create role 1.4 输入角色名字 完成后点击下面的create role 1.5 创建好角色后,找到角色,点击 角色名 就会进入给角色授权界

    2024年02月08日
    浏览(49)
  • Elasticsearch-37.索引全生命周期管理及工具介绍

    时间序列的索引 特点 索引中的数据随着时间, 持续不断增长 按照时间序 列划分索引的好处挑战 按照时间进行划分索引, 会使得管理更加简单。例如,完整删除一个引, 性能比delete by query好: 如何进行自动化管理,减少人工操作 从Hot 移动到Warm 定期关闭或者删除索引 索引

    2023年04月10日
    浏览(39)
  • elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令

    一、es的基本原理与基础概念 1.1 倒排索引 倒排索引 源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带

    2024年02月12日
    浏览(49)
  • Elasticsearch ILM实现索引全生命周期自动管理,解放双手

    公众号: MCNU云原生 ,欢迎搜索关注,更多干货,第一时间掌握! 一、什么是Elasticsearch ILM? Elasticsearch Index Lifecycle Management(ILM)是Elasticsearch的一个功能,用于管理索引的生命周期,优化索引的性能和减少存储成本。ILM可以自动执行索引的各种操作,如创建、删除、滚动、

    2023年04月13日
    浏览(42)
  • 通过es索引生命周期策略删除日志索引

    在es 7.x版本之后,多了个索引生命周期的概念,可以一系列的设置,给新生成的索引绑定生命周期策略,到期后,索引自动删除。 也可以通过linux定时任务实现,请查看另一篇文章《通过linux定时任务删除es日志索引》 创建索引生命周期策略 创建索引模板,与生命周期策略绑

    2024年02月09日
    浏览(49)
  • Elasticsearch 索引模板、生命周期策略、节点角色

    索引模板可以帮助简化创建和二次配置索引的过程,让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热(hot)、温(warm)和冷(cold)数据,以及定期删除过期的数据,以确保Elasticsearch的健康运行。 Elasticsearch集

    2024年04月16日
    浏览(38)
  • elasticsearch 7.9.3知识归纳整理(四)之 java实现深分页scroll

    ES对from+size是有限制的,from和size的和不能超过1w。超过后效率十分低下。 ES查询过程: ①将用户的指定的进行分词 ②将词汇去分词库中进行检索,得到多个文档的id ③去各个分片中拉去数据指定的数据(耗时长) ④将数据根据score进行排序(耗时长) ⑤根据from的值将查询

    2024年02月05日
    浏览(42)
  • elasticsearch的生命周期管理

    当需要存储的数据量特别大的时候,我们会希望ES能够通过预先设定的阈值,去自动创建索引,并将过期的索引删除掉。这里就需要用到ES的生命周期。 ES的生命周期分为4个阶段: HOT-WARM-COLD-DELETE 。 elasticsearch version 7.9.3 kibana version 7.9.3 其中的 HOT 阶段是必须配置的,其他三个

    2024年02月15日
    浏览(36)
  • Elasticsearch 索引模板、生命周期策略、节点角色(1),8年大数据开发开发教你如何写简历

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新大数据全套学习资料》,

    2024年04月26日
    浏览(43)
  • Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

    警告 :此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中,我们将了解如何将现有数据流(data stream)从索引生命周期管理 (ILM) 迁移到数据

    2024年04月29日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包