下文简称:A源索引 B新索引 C最终索引本文使用 ElasticSearch-head插件
- 创建新索引B:分片数默认5,副本数设置为0,写入更快
- 设置索引B的映射:最终想要的mapping字段结构
POST 索引B/type名/_mapping { "properties": { "log_request_body": { "type": "text", "fields": { "keyword": { "ignore_above": 256, "type": "keyword" } } }, {更多字段....} } }
- 设置索引B不自动刷新,写入更快
PUT 索引B/_settings { "index": { "refresh_interval": "-1" } }
- 设置索引B不动态添加mapping,否则会自动创建旧索引mapping,那不前功尽弃了
dynamic策略
true:默认值,遇到陌生字段,就动态添加
false:遇到陌生字段,就忽略
strict:遇到陌生字段,就报错
PUT 索引B/type名/_mapping { "dynamic": "false" }
- 数据拷贝:A到B wait_for_completion=false不等待直接返回taskid,任务后台执行
"size": 5000,以5000个doc为一组进行复制
POST _reindex?wait_for_completion=false { "source": { "index": "log_statistics", "size": 5000 }, "dest": { "index": "log_statistics_new3" } }
- 查看task进度 或 取消task
GET _tasks?detailed=true&actions=*reindex
- 等待复制完成后,删除索引A,释放磁盘空间
shell命令:
curl -XPOST 'http://localhost:9200/源索引A/_forcemerge?only_expunge_deletes=true' curl -XDELETE localhost:9200/源索引A
- 重建与A相同名字的索引C,分片数默认5,副本数设置为0,写入更快
- 设置索引C不自动刷新,写入更快
- 数据拷贝:B到C wait_for_completion=false不等待,返回taskid,后台执行
- 查看task进度
- 删除索引B,释放磁盘空间
- 最终索引C修改回默认设置:自动刷新,动态添加mapping,副本数设置为1 步骤3值改为1s,步骤4值改为true,各执行一次,下面的是设置副本数:
PUT 索引C/_settings { "number_of_replicas": 1 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)