线上华为机器资源稀缺,规定es索引上限50G,现在线上出现超过该阈值的情况,需要做迁移。es版本6.5.4
一:reindex
1.1使用场景:
- 当数据量过大,而索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。
- 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的,
1.2 使用步骤:
1.根据原来索引的mapping和setting文件创建索引模板。
模板创建更多细节请参考文章 Elasticsearch索引拆分方案 - Elastic 中文社区
curl -XPOST "http://172.17.6.135:9220/_template/sp_mf_template" -H 'Content-Type: application/json' -d'
{
"order": 0, // 模板优先级
"index_patterns": ["goods_comment*"],// 模板匹配的名称方式
"settings": {...}, // 索引设置
"mappings": {...}, // 索引中各字段的映射定义
"aliases": {...} // 索引的别名
}
2.根据模板创建新的索引
curl -XPUT "http://ip:port/goods_comment_1"
3.拷贝索引内容
基础拷贝功能如下,更多拷贝细节请参考博客 :elasticsearch 基础 —— ReIndex - 走看看
curl -XPOST 'ip:port/_reindex?pretty' -H 'Content-Type: application/json' -d'
{
"source": {"index": "oldIndexName"},
"dest": {"index": "newIndexName"}
}
4.将别名指向新索引
5.删除旧索引
出现问题:reindex的基础功能是拷贝数据到另外一个索引中,但是需求是拆分大索引到两个小索引,索引用