Reindex如何实现索引重建?
- 滚动索引 + 批量复制
Reindex存在的问题
- 如果新的索引没有提前创建好,并指定字段类型,那么重建后的新索引类型极有可能会和旧的索引不一致,因为ES他会推断类型,而推断错误率从实战来说那是相当的高
Reindex能解决的问题
- 字段类型设置错了
- 旧的索引分片不合理,想重新分
- 某批数据存错了,或只想保留具备指定特性或关键字的数据,可以根据条件来重建索引,筛选出符合条件的数据进行重建,
POST _reindex
{
"source": {
"index":"remind_test", // 旧的源索引名称
"query": {
"term": {
"summary": "java" // 只重建包含java的数据
}
}
},
"dest":{
"index": "remind_new" // 重建后新索引的索引名称
}
}
- 指向要指定的字段,其余字段想删掉,也可以使用重建索引
POST _reindex
{
"source": {
"index":"remind_test", // 旧的源索引名称
"_source": ["id", "title", "name"] // 只重建id, title, name字段,其余字段不要了,则重建后的新索引,只会有这3个字段
},
"dest":{
"index": "remind_new" // 重建后新索引的索引名称
}
}
- 多个索引库合并重建(即有多个索引,想把字段和数据整合到一个大索引中)
== 注意: 如果多个索引中存在相同的