关于索引:ElasticSearch必知必会Reindex重建索引

4次阅读

共计 2161 个字符,预计需要花费 6 分钟才能阅读完成。

作者:京东物流 康睿

1. 重建索引需要背景

1.1 集群版本升级

ES 版本兼容性

  1. 同一大版本范畴内降级,索引读写兼容
  2. 不同大版本升级,索引读写不兼容,须要重建索引

1.2 集群迁徙

集群索引迁徙

  1. 集群迁徙,索引服务不停机,数据提前迁徙

1.3 索引分片数量调整

分片数量变更

  1. 原有分片数量太少,重建变多
  2. 原有分片数量太多,重建变少
  3. ES 索引分片,一旦创立,原索引是不能批改分片数量的

1.4 索引文档构造变更

文档构造变更

  1. 字段类型变更,已有索引字段类型是不能够批改的
  2. 字段属性变更,历史数据的字段属性是不会刷新的
  3. 文档对象构造变更

2. 罕用重建索引形式

2.1 Reindex 初识

索引重建阐明

  1. 重建是创立新索引,原有索引保留
  2. 原有索引_source 必须开启,否则找不到原始数据
  3. 索引重建倡议,严格业务场景,指标索引 mapping 构造倡议先创立好,不应用 es 动静揣测字段类型的形式。
POST_reindex
{
  "source": {"index": "原始索引"},
  "dest": {"index": "新指标索引"}
}


2.2 Url 参数解读

URL 参数

  1. refresh,指标索引是否立刻刷新
  2. waif\_for\_active_shards, 重建索引分片响应设置
  3. Scroll, 快照查问工夫
  4. slicing, 重建并行任务切片
  5. Max_docs , 单次最大数据量,条数
  6. requests\_per\_second . 单次执行的重建文档数据量

2.3 Request body 参数解读

申请参数

  1. confilicts, 索引数据抵触如何解决,间接笼罩还是中断
  2. source: 原索引配置信息
  3. dest,新索引配置信息
  4. script,脚本解决,批改原索引信息后再写入新索引

2.4 Response 参数解读

响应参数

  1. 胜利数
  2. 更新数
  3. 新增数
  4. 失败数

2.5 重建索引工作管控

工作管控必要性

  1. 重建索引是一个异步工作,由 ES 后盾过程实现调度执行,集群可能有并行其余异步工作,有时须要中断进行或查看进度

工作管控 API

  1. _tasks,服务端 API

3. 高级索引重建形式

3.1 单秒数据量阈值管制

单秒数据量管制

  1. requests\_per\_second
  2. 默认 1000,设置 - 1 则不限度
  3. 生产重建时,倡议管制范畴 500-1000 左右
  4. 管制重建速度,避免集群霎时 IO 过大

3.2 人工切片

数据切片利用

  1. 人为指定切片数量,并行任务
  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 主动切片

主动切片

  1. 仅需指定主动切片大小即可,后续的调度由 es 实现
POST_reindex?slices=5&refresh
{
  "source": {"index": "my-index-000001"},
  "dest": {"index": "my-new-index-000001"}
}


3.4 限度 reindex 重建数据的范畴

3.4.1 query

限度查问条件

  1. 基于 DEL 语言规定编写,能够任意简单,限度数据范畴
POST_reindex
{
  "source": {
    "index": "my-index-000001",
    "query": {
      "term": {"user.id": "kimchy"}
    }
  },
  "dest": {"index": "my-new-index-000001"}
}


3.4.2 max docs

限度数据条数

  1. 限度重建数据总条数,默认全副
POST_reindex
{
  "max_docs": 1,
  "source": {"index": "my-index-000001"},
  "dest": {"index": "my-new-index-000001"}
}


3.5 多索引重建

多索引重建

  1. ES 也反对将多个索引数据合并到一个索引外面去
  2. 若多个索引数据 ID 雷同,则会互相笼罩
POST_reindex
{
  "source": {"index": ["my-index-000001", "my-index-000002"]
  },
  "dest": {"index": "my-new-index-000002"}
}


3.6 限度重建索引数据字段

限度重建索引数据字段

  1. source filter
  2. 原有数据字段过多,须要限度筛选局部进行重建
POST_reindex
{
  "source": {
    "index": "my-index-000001",
    "_source": ["user.id", "_doc"]
  },
  "dest": {"index": "my-new-index-000001"}
}


3.7 字段重命名

字段名重命名

  1. 原有的数据字段名称不合理,从新依照新字段命名
  2. 基于脚本机制批改
  3. ES 字段名称原始是不容许批改的,但通过脚本能够操作

3.8 批改原始文档数据

批改原始文档数据

  1. 基于脚本

4. 跨集群索引重建

跨集群操作

  1. 基于集群通信,类同近程机制
  2. 需设置跨集群白名单,配置在 dist 集群

5. 索引重建注意事项

5.1 数据量阈值管制

管制好索引重建速率,避免过快

5.2 索引拜访穿插影响

倡议先新建好 dist 索引

正文完
 0