rollover可以根据索引大小,文档数或使用期限自动过渡到新索引。当rollover触发后,将创建新索引,写别名(write alias)将更新为指向新索引,所有后续更新将都写入新索引。
版本:elasticSearch6.3提供了rollover功能。
rollover的使用场景:
Elasticsearch中的rollover接口功能来滚动存储日志,从而达到优化日志查询效率的目的,也方便了对老旧日志数据的管理。
rollover适合存放日志数据、索引非常大、索引实时导入等场景。
elasticSearch索引生命周期的4个阶段:
阶段 | 描述 |
---|---|
hot | 主要处理时序数据的实时写入 |
warm | 可以用来查询,但是不再写入 |
cold | 索引不再有更新操作,并且查询很会很少 |
delete | 数据将被删除 |
上述四个阶段不是必须同时存在。
2. 创建方式
删除策略的命令:
DELETE _ilm/policy/test_demo_policy
注意,删除策略前,需要删除使用该策略的所有索引。
2.1 配置策略
# 配置策略
PUT _ilm/policy/test_demo_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover":{
"max_docs":1
}
}
},
"delete": {
"min_age": "30s",
"actions": {
"delete": {}
}
}
}
}
}
上述的意思是:文档中最大的条数为1条(便于测试),自动回滚的文件将在30s后删除(便于测试)。
也可以如下图配置存活时间和最大的内存数。
PUT _ilm/policy/policy_index
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50GB",
"max_age": "5m"
}
}
}
}
}
}
2.2 创建模板
PUT _template/test_demo_template
{
"index_patterns": ["test-demo-*"],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "test_demo_policy",
"index.lifecycle.rollover_alias": "test-demo"
},
"aliases":{
"index-test-read":{
"is_write_index":"false"
}
}
}
上文中,创建了名为test-demo
的rollover_alias。但是并未和索引进行绑定,需要进行显示的绑定,否则将出现:
2.3 创建文档并绑定别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "test-demo-000001",
"alias": "test-demo",
"is_write_index": true
}
}
]
}
2.4 kibana控制台
也可以在改页面上配置policy。