栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch操作(七)之生命周期的管理

Elasticsearch操作(七)之生命周期的管理

Elasticsearch操作(七)之生命周期的管理 一、常见概念及命令 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/ #查看指定策略id
DELETE _ilm/policy/ # 删除指定策略

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

查看索引的生命周期状态:
GET /_ilm/explain
例如:
GET my_cas_history_logs/_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/
{
	"order":0,
	"index_patterns":["-*"], #index_name是自己的索引别名
	"settings":{
		"index.lifecycle.name":"common_policy", #这里的common_policy就是上面设置的策略
		"index.lifecycle.rollover_alias":"",
		"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":{}
}
第三步:创建符合模板的起始索引,设置别名(即我们统一对外提供服务的索引名)。
#创建索引,支持rollover的时候index名称附加年月日时分秒(将url及json里面的替换为对应索引名)
PUT /%3C-%7Bnow%2Fm%7Byyyy.MM.dd.HH.mm%7CAsia%2FShanghai%7D%7D-000001%3E
{
	"aliases":{
		"":{
			"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 的生命周期的管理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311326.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号