前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ES日志报错赏析-index cannot exceed 2147483519

ES日志报错赏析-index cannot exceed 2147483519

原创
作者头像
ES小助理
修改2023-07-19 16:00:49
修改2023-07-19 16:00:49
2.6K00
代码可运行
举报
文章被收录于专栏:ES排障ES排障
运行总次数:0
代码可运行

报错现象

代码语言:javascript
代码运行次数:0
运行
复制
number of documents in the index cannot exceed  2147483519

报错解析

ES单个分片最大的文档数是21个亿。如果写入的doc总量超过这个值,就会写入拒绝!!

为防止因分片满导致写入拒绝,一定要提前做好监控告警,分片文档数大于19亿及时告警。平时控制分片大小在30-50G健康水位,防止单个分片过大。防止倾斜数据产生。

解决方案

方案1:

新建新索引写入,并且规划好分片大小。

方案2:

reindex索引,新索引做好分片规划

首先关闭索引自动创建,防止旧索引删除后,自动创建同名索引。

代码语言:javascript
代码运行次数:0
运行
复制
PUT _cluster/settings
{
  "persistent": {
    "action.auto_create_index": false
  }
}

其次:先去掉副本,索引设置只读,禁写。

代码语言:javascript
代码运行次数:0
运行
复制
PUT indexname/_settings
{
  "blocks.write": true
}

第三步,创建目标索引,包括settings\mappings(此处省略创建步骤)

执行拷贝

代码语言:javascript
代码运行次数:0
运行
复制
POST _reindex?wait_for_completion=false&slices=auto&refresh
{
  "source": {
    "index": "indexname"
  },
  "dest": {
    "index": "indexname_new"
  }
}

第四步:查看进度 自定义拷贝

代码语言:javascript
代码运行次数:0
运行
复制
获取reindex任务列表
GET _tasks?detailed=true&actions=*reindex

根据任务ID查看任务
GET /_tasks/r1A2WoRbTwKZ516z6NEs5A:36619

若想取消任务
POST _tasks/r1A2WoRbTwKZ516z6NEs5A:36619/_cancel

第五步:删除旧索引delete source index

第六步:添加别名

代码语言:javascript
代码运行次数:0
运行
复制
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "indexname_new",
        "alias": "indexname"  //这里可以用老索引名字,就不需要业务侧修改写入索引名了
      }
    }
  ]
}

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 报错现象
  • 报错解析
  • 解决方案
    • 方案1:
    • 方案2:
    • 首先关闭索引自动创建,防止旧索引删除后,自动创建同名索引。
    • 其次:先去掉副本,索引设置只读,禁写。
    • 第三步,创建目标索引,包括settings\mappings(此处省略创建步骤)
    • 第四步:查看进度 自定义拷贝
    • 第五步:删除旧索引delete source index
    • 第六步:添加别名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档