前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 缩减索引的分片个数「Index Shrink」

Elasticsearch 缩减索引的分片个数「Index Shrink」

原创
作者头像
岳涛
发布2024-08-31 18:18:10
1110
发布2024-08-31 18:18:10
举报
文章被收录于专栏:大数据生态

说明

本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)

背景

当存量的索引不再有写入,并且索引分片多、数据量小的时候,可以考虑将数据分片个数减少。

Shrink 限制

1.索引主分片数是偶数的话,shrink后的个数是偶数(小于原来索引的主分片个数)或者1; 2.索引主分片数是奇数的话,shrink后的个数是奇数(小于原来索引的主分片个数); 3.索引主分片数是质数的话,shrink后的个数只能是1;

例如:

  • 索引是 8 主分片可以收缩成 421 主分片;
  • 索引是15 主分片可以收缩成 531 主分片;
  • 索引是7 主分片只能收缩成1;

收缩原理

1. 新建一个和源index相同配置的index,只是主分片个数不一样; 2 .将源index的segment创建硬连接到新index上。(windos系统不支持硬连接,所以会进行拷贝;若是segment位于不同的磁盘上,也需要拷贝); 3. 恢复成新index。

相关操作

索引在收缩分片个数前,需要将索引标记为只读,并且索引中每个分片的(主副本或副本)副本必须重定位到同一节点,并且索引的健康状态绿色。

代码语言:javascript
复制
PUT /source_index/_settings
{
  "settings": {
    "index.routing.allocation.require._name": "node_name", 
    "index.blocks.write": true 
  }
}

注,选择的数据节点要有能存储下这个索引的空间。

代码语言:javascript
复制
POST source_index/_shrink/shrink_index?copy_settings=true
{
  "settings": {
    "index.number_of_replicas": 1,
    "index.number_of_shards": 1, 
    "index.codec": "best_compression" 
  },
  "aliases": {
    "my_search_indices": {}
  }
}

注意, copy_settings 不能将其设置为 false,该参数将在8版本中移除。

恢复源索引设置,否则副本分片不能分配。

代码语言:javascript
复制
POST my_source_index/_setting
{
  "settings": {
    "index.routing.allocation.require._name": null, 
    "index.blocks.write": null 
  }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 背景
  • Shrink 限制
  • 收缩原理
  • 相关操作
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档