【ES实战】Split Index使用说明

Split Index使用说明

将源索引按照特定的规则分裂成一个比源索引拥有更多主分片的新索引。

使用前提

  • 配置index.number_of_routing_shards。这个参数的值,应该要比主分片的个数多,且考虑集群数据节点个数这个因素,在合理范围之内。
  • 源索引禁止写入。
  • 目标索引(新索引)不存在
  • 集群的存储必须可以满足源索引数据的两倍。

主要功能实现

引用官网的说明

  1. 根据源索引的配置创建一个目标索引,目标索引的主分片数量是index.number_of_routing_shards的因子。这个因子需要大于源索引主分片数。
  2. 然后它将源索引中的segments硬链接到目标索引中。 (如果文件系统不支持硬链接,那么所有segments都被复制到新索引中,这是一个更耗时的过程。)
  3. 一旦创建了低级文件,所有文档将再次被散列,以删除属于不同分片的文档。
  4. 最后,恢复目标索引,就好像它是一个刚刚重新打开的关闭索引。

硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块

软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。

举例说明

  1. 创建一个源索引,它的主分片个数是2,number_of_routing_shards值为4。代表由这个索引可以分裂出主分片为4个的新索引。
PUT gudong20211220001
{
    "settings": {
        "index.number_of_shards" : 2,
        "index.number_of_routing_shards" : 4 
    }
}
  1. 使用index.blocks.write禁止源索引的写,这样索引元数据还是可以正常写的。
PUT /gudong20211220001/_settings
{
  "settings": {
    "index.blocks.write": true 
  }
}
  1. 将源索引分裂出新索引
POST gudong20211220001/_split/gudong20211220002?copy_settings=true
{
  "settings": {
    "index.number_of_shards": 4
  }
}

默认情况下,除 index.analysisindex.similarityindex.sort 配置外,在拆分操作期间不会复制源索引上的索引设置。除了不可复制的设置之外,源索引中的设置可以通过向请求添加 URL 参数 copy_settings=true 来复制到目标索引。请注意,不能将copy_settings设置为false。参数 copy_settings将在 8.0.0 中移除。

  1. 查看索引
health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   gudong20211220001 p8UzafXnQ8uWGUPbLul1tQ   2   1          0            0       920b           460b
green  open   gudong20211220002 4bofg6c_S-muSt2w7GvNig   4   1          0            0      1.7kb           920b

分裂过程监控

GET _cat/recovery/gudong20211220002?v

问题总结

  • 问题:“reason”:“the number of source shards [2] must be less that the number of target shards [1]”

说明目标索引的主分片个数需要大于源索引的主分片个数

  • 问题:“reason”:“can’t select recover from shards if both indices have the same number of shards”

说明目标索引的主分片个数需要大于源索引的主分片个数

  • 问题:“reason”:“the number of routing shards [4] must be a multiple of the target shards [8]”

说明目标索引的主分片个数必须是index.number_of_routing_shards的因数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顧棟

若对你有帮助,望对作者鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值