网站首页 > 开源技术 正文
使用Elasticsearch处理海量的日志记录的场景中,如果数据都放到相同的索引中,那么随着时间的堆积,后续数据的插入和查询的性能则会越来越差。Elasticsearch 从 5.0 开始,为此场景提供了rollover功能,当某个别名指向的实际索引过大的时候,自动将别名指向下一个实际索引。
rollover index
可以给索引设置一定的条件,并提供一个对外使用的索引别名,当索引达到指定的条件时,就会按照一定的规则建立新的索引,对应的别名也会指向新的索引,后续的数据就会写到新建的索引中。由于外部应用使用的是索引的别名,对这种变化也是完全无感知的。
建立别名,在创建index时可以给定(由aliases参数指定),或者后期添加:
POST _aliases
{
"actions": [
{
"add": {
"index": "my-index",
"alias": "logs"
}
}
]
}
对Index进行Roller请求,如果条件满足,自动创建并将别名指向下一个索引。
POST my-index/_rollover {
"conditions": {
"max_age": "1d",
"max_docs": 10000000
}
}
条件可选的参数有:
参数名 | 说明 |
max_age | 指定索引存在的最大周期,如1d,7d,1m,1y |
max_docs | 存放的最低索引文档数,这个不包括副本中的索引文档数 |
max_size | 索引中主分片所占用的空间大小 |
自动滚动
自动滚动有两种方案,一个是基于别名和生命周期,一个是专门用在时序数据的DataStream和生命周期。DataStream是7.9的新特性,可以认为是自动管理别名和索引的整体方案。当然也还有一种手工的办法,手工或定时脚本执行Roller请求。
- 生命周期
管理索引滚动的核心是索引生命周期管理策略(Index Liftcycle Policy),一个典型的 ILM 通常有4个阶段:Hot, Warm, Cold, 以及 Delete,根据条件进行阶段的转移,条件则是上文提到的条件:max_age、max_docs、max_size。每个阶段对应很多操作,如rollover、shrink、readonly、delete等等
PUT _ilm/policy/my_rollover_policy {
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"rollover": {
"max_primary_shard_size": "3gb",
"max_age": "1d"
}
}
},
"warm": {
"min_age": "5d",
"actions": {
"readonly": {},
"allocate": {
"number_of_replicas": 0
}
}
},
"delete": {
"min_age": "15d",
"actions": {
"delete": {
"delete_searchable_snapshot": true
}
}
}
}
}
}
- 模板
通过模板管理索引的策略与别名可以做到自动化。模板定义字段与分片之类参见API文档,这儿只提及与滚动相关配置。
PUT _index_template/my-log {
"template": {
"settings": {
"index": {
"lifecycle": {
"name": "my_log_rollover_policy",
"rollover_alias": "my-log-index"
}
}
},
"mappings": {
"dynamic_templates": [...],
"properties": {...}
}
},
"index_patterns": [
"my-log*"
]
}
重点是lifecycle配置,指定生命周期策略,指定滚动别名。
创建索引时需要指定别名,必须与index.lifecycle.rollover_alias相同。
PUT my-log-000001
{
"aliases": {
"my-log-index": {}
}
}
- 基于别名的自动滚动
经过设置生命周期,创建模板,创建带别名的索引,简单几步就可以完成整个配置,此索引达到指定条件时,便自动创建下一个索引,将别名指定到新的索引,名称则是固定前缀后加一个六位数的零填充整数。
- 基于DataStream的自动滚动
与上面的方案类似,创建生命周期,创建模板,创建数据流,即可完成整个配置。需要注意的是,只有一点差别,就是创建模板时,不需要再指定index.lifecycle.rollover_alias,并加标识"data_stream": { },表明自己是个DataStream即可。
PUT _data_stream/my-log
当发送数据到data stream时,达到一定条件,则会自动滚动。
所有的配置,都可以在Kabana面板上可视化操作。
DataStream相当于自动化的完成别名的指向,索引的滚动则是由生命周期来定义。
DataStream相当对这类滚动的时序数据类型的索引进行了统一的包装。
猜你喜欢
- 2024-12-24 k8s经典面试:如何保障滚动升级的时候,流量不中断
- 2024-12-24 艏附加救生筏布置和操作需要关注哪些要求|液货船安全管理1000问
- 2024-12-24 吸顶大法 -- UWP中的工具栏吸顶的实现方式之一
- 2024-12-24 电气自动化专业词汇中英文对照表 电气自动化的英文缩写
- 2024-12-24 30分钟了解K8S 30分钟了解经济机器
- 2024-08-04 索引生命周期管理ILM看完不懂你锤我
- 2024-08-04 【四】海獭自行车展上,公路车和山地车之间的界限越来越模糊
- 2024-08-04 在 View 上使用挂起函数(getpivotdata函数的使用方法及实例)
- 2024-08-04 Flutter3.13新特性概述(flutter最新)
- 2024-08-04 可能是全网最好用的ViewPager控件?老司机们来验验成色
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)