共计 2161 个字符,预计需要花费 6 分钟才能阅读完成。
作者:京东物流 康睿
1. 重建索引需要背景
1.1 集群版本升级
ES 版本兼容性
- 同一大版本范畴内降级,索引读写兼容
- 不同大版本升级,索引读写不兼容,须要重建索引
1.2 集群迁徙
集群索引迁徙
- 集群迁徙,索引服务不停机,数据提前迁徙
1.3 索引分片数量调整
分片数量变更
- 原有分片数量太少,重建变多
- 原有分片数量太多,重建变少
- ES 索引分片,一旦创立,原索引是不能批改分片数量的
1.4 索引文档构造变更
文档构造变更
- 字段类型变更,已有索引字段类型是不能够批改的
- 字段属性变更,历史数据的字段属性是不会刷新的
- 文档对象构造变更
2. 罕用重建索引形式
2.1 Reindex 初识
索引重建阐明
- 重建是创立新索引,原有索引保留
- 原有索引_source 必须开启,否则找不到原始数据
- 索引重建倡议,严格业务场景,指标索引 mapping 构造倡议先创立好,不应用 es 动静揣测字段类型的形式。
POST_reindex
{
"source": {"index": "原始索引"},
"dest": {"index": "新指标索引"}
}
2.2 Url 参数解读
URL 参数
- refresh,指标索引是否立刻刷新
- waif\_for\_active_shards, 重建索引分片响应设置
- Scroll, 快照查问工夫
- slicing, 重建并行任务切片
- Max_docs , 单次最大数据量,条数
- requests\_per\_second . 单次执行的重建文档数据量
2.3 Request body 参数解读
申请参数
- confilicts, 索引数据抵触如何解决,间接笼罩还是中断
- source: 原索引配置信息
- dest,新索引配置信息
- script,脚本解决,批改原索引信息后再写入新索引
2.4 Response 参数解读
响应参数
- 胜利数
- 更新数
- 新增数
- 失败数
2.5 重建索引工作管控
工作管控必要性
- 重建索引是一个异步工作,由 ES 后盾过程实现调度执行,集群可能有并行其余异步工作,有时须要中断进行或查看进度
工作管控 API
- _tasks,服务端 API
3. 高级索引重建形式
3.1 单秒数据量阈值管制
单秒数据量管制
- requests\_per\_second
- 默认 1000,设置 - 1 则不限度
- 生产重建时,倡议管制范畴 500-1000 左右
- 管制重建速度,避免集群霎时 IO 过大
3.2 人工切片
数据切片利用
- 人为指定切片数量,并行任务
- 用于升高索引 redinx 速度
POST_reindex
{
"source": {
"index": "my-index-000001",
"slice": {
"id": 0, // 执行下标,从 0 开始,即 0 切第一批数据做迁徙,1 切第二批数据做迁徙
"max": 2 // 切分分片数
}
},
"dest": {"index": "my-new-index-000001"}
}
3.3 主动切片
主动切片
- 仅需指定主动切片大小即可,后续的调度由 es 实现
POST_reindex?slices=5&refresh
{
"source": {"index": "my-index-000001"},
"dest": {"index": "my-new-index-000001"}
}
3.4 限度 reindex 重建数据的范畴
3.4.1 query
限度查问条件
- 基于 DEL 语言规定编写,能够任意简单,限度数据范畴
POST_reindex
{
"source": {
"index": "my-index-000001",
"query": {
"term": {"user.id": "kimchy"}
}
},
"dest": {"index": "my-new-index-000001"}
}
3.4.2 max docs
限度数据条数
- 限度重建数据总条数,默认全副
POST_reindex
{
"max_docs": 1,
"source": {"index": "my-index-000001"},
"dest": {"index": "my-new-index-000001"}
}
3.5 多索引重建
多索引重建
- ES 也反对将多个索引数据合并到一个索引外面去
- 若多个索引数据 ID 雷同,则会互相笼罩
POST_reindex
{
"source": {"index": ["my-index-000001", "my-index-000002"]
},
"dest": {"index": "my-new-index-000002"}
}
3.6 限度重建索引数据字段
限度重建索引数据字段
- source filter
- 原有数据字段过多,须要限度筛选局部进行重建
POST_reindex
{
"source": {
"index": "my-index-000001",
"_source": ["user.id", "_doc"]
},
"dest": {"index": "my-new-index-000001"}
}
3.7 字段重命名
字段名重命名
- 原有的数据字段名称不合理,从新依照新字段命名
- 基于脚本机制批改
- ES 字段名称原始是不容许批改的,但通过脚本能够操作
3.8 批改原始文档数据
批改原始文档数据
- 基于脚本
4. 跨集群索引重建
跨集群操作
- 基于集群通信,类同近程机制
- 需设置跨集群白名单,配置在 dist 集群
5. 索引重建注意事项
5.1 数据量阈值管制
管制好索引重建速率,避免过快
5.2 索引拜访穿插影响
倡议先新建好 dist 索引
正文完