Elasticsearch rollover API
rollover API 使你可以根据索引大小,文档数或使用期限自动过渡到新索引。 当 rollover 触发后,将创建新索引,将索引别名转向新索引,所有后续更新都将写入新索引。
Rollover历史数据
在大多数情况下,无限期保留历史数据是不可行的。
- 时间序列数据随着时间的流逝而失去价值,我们最终不得不将其删除
- 但是其中一些数据对于分析仍然非常有用
Elasticsearch 6.3 引入了一项新的 rollover 功能,该功能。
- 以紧凑的聚合格式保存旧数据
- 仅保存您感兴趣的数据
就像上面的图片看到的那样,我们定义了一个叫做 logs-alias 的alias,对于写操作来说,它总是会自动指向最新的可以用于写入index 的一个索引。针对我们上面的情况,它指向 logs-000002。如果新的 rollover 发生后,新的 logs-000003 将被生成,并对于写操作来说,它自动指向最新生产的 logs-000003 索引。而对于读写操作来说,它将同时指向最先的 logs-1,logs-000002 及 logs-000003。在这里我们需要注意的是:在我们最早设定 index 名字时,最后的一个字符必须是数字,比如我们上面显示的 logs-1。否则,自动生产 index 将会失败。
rollover 例子
我们还是先拿一个 rollover 的例子来说明,这样比较清楚。首先我们定义一个 log-alias 的 alias:
PUT /%3Clogs-%7Bnow%2Fd%7D-1%3E { "aliases": { "log_alias": { "is_write_index": true } } }
如果大家对于上面的字符串 “%3Clogs-%7Bnow%2Fd%7D-1%3E” 比较陌生的话,可以参考网站 https://www.urlencoder.io/。实际上它就是字符串 “<logs-{now/d}-1>” 的url编码形式。请注意上面的 is_write_index 必须设置为 true。运行上面的结果是:
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "logs-2019.10.21-1" }
向别名中添加数据:
PUT log_alias/doc/1 { "message": "a dummy log" } PUT log_alias/doc/2 { "message": "a dummy log" }
查看索引:
GET _cat/indices/logs-2020.09.21*
执行rollover:
POST /log_alias/_rollover { "conditions": { "max_age": "7d", 时间超过7天 "max_docs": "2", doc条数超过2条 "max_size": "5gb" 大小超过5G } }
结果:
生成新的索引 logs-2020.09.21-000002
继续向别名添加数据:
PUT log_alias/doc/3 { "message": "a dummy log" } PUT log_alias/doc/4 { "message": "a dummy log" } PUT log_alias/doc/5 { "message": "a dummy log" }
新加的数据写入新创建的索引 logs-2020.09.21-000002
注意:
只有es6.3后执行rollover后,别名logs的写指向最新索引,查询指向所有rollover下的索引。
只有执行rollover的时候符合条件才会生成新的索引,满足条件的时候是不会自动生成新索引的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)