ElasticSearch _reindex的操作以及异常处理

前言

ElasticSearch的索引是不支持直接修改的,比如删除字段、修改分片等,需要新建索引,把旧索引的数据同步到新索引上。

针对上述问题,ElasticSearch提供了一个操作:_reindex。

版本:7.4

操作命令

命令如下:

POST _reindex
{
  "source": {
    "index": "old_index"
  }, 
  "dest": {
    "index": "new_index"
  }
}

关于迁移速度

1、ElasticSearch的_reindex默认迁移速度默认是:1000,可以通过设置合理的大小,来达到最佳的迁移速度。

命令如下:

PS:看其他文章建议size设置为5000为最佳,个人暂时没有时间验证。

POST _reindex
{
  "source": {
    "index": "old_index",
    "size": 5000
  }, 
  "dest": {
    "index": "new_index"
  }
}

2、ElasticSearch的slices默认是:1,可以设置slices为当前索引的分片数,可以提高迁移速度;

假如分片数为6

命令如下:

POST _reindex?slices=6&refresh
{
  "source": {
    "index": "old_index"
  },
  "dest": {
    "index": "new_index"
  }
}

关于迁移超时问题

解决方法:wait_for_completion=false

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "old_index",
    "size": 5000
  }, 
  "dest": {
    "index": "new_index"
  }
}

当然还有其他参数可以增加,后续补充...


官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/docs-reindex.html

本文链接地址,转载请标注: https://caohongyuan.com/article/185


0

上一篇: MySQL binlog日志三种模式解释、查看及配置

下一篇: Linux 安装 FFmpeg 教程

提交 清空
Re: