需求背景:
项目早期使用es存储一些访问日志,通过代码控制按天分创建索引(eg:acc_log_2024.11.12),并通过代码控制保留时长.随着业务扩张,单索引数据越来约多,导致按天创建索引无法满足需求,需要改成按生命周期管理索引。
历史索引查询使用别名 acc_log_alias.
目标:
平滑切换,并可以同步查询历史数据及新数据。
升级操作:
以下操作都通过kibana页面操作进行
1.创建生命周期策略
我们创建名为acc_ilm的生命周期,并且启用滚动更新,并按照以下截图进行配置(示例按照默认配置来,实际情况按照需求配置即可):
删除阶段配置删除31天以前的数据,注意只有在热阶段的最大存在时间过去之后才会进入下一阶段
2.创建索引模板
在索引管理界面,切换到索引模板切页,创建索引模板
配置模板名称和索引模式名称(注:启用生命周期滚动更新的模板索引模式命名规则 %s-000001 类中这种的)
在索引设置模块设置别名等信息,示例中:
lifecycle.name 是生命周期名称
lifecycle.rollover_alias 是滚动更新写入的别名
其他配置看需求自定义。
配置索引的mapping,可以手动一个一个加,也可以通过下图中的按钮使用索引mapping直接配置。
mapping示例:
{
"properties": {
"dateTime": {
"type": "date"
},
"id": {
"type": "keyword"
}
}
}
设置模板别名,别名跟之前的查询别名保持一致,注意这里的查询别名不能跟写入别名一样,否则生命周期管理会报错,如果不需要新的别名这里默认即可
一路下一步即可创建模板。
3.初始化索引
模板创建成功之后,如果要使用生命周期策略管理,需要先创建默认索引,绑定写入别名,并设置为默认写入索引。
在kibana的开发工具执行以下命令初始化
初始命令:
PUT acc-000001
{
"aliases": {
"acc_write_alise": {
"is_write_index": true
}
}
}
初始化完成之后,即可通过 acc_write_alise 直接写入,并使用生命周期策略管理数据。由于配置了别名acc_log_alias,查询可以使用旧的别名acc_log_alias进行查询。代码测试写入,写入成功即配置成功。