Reindex如何實(shí)現(xiàn)索引重建?
- 滾動(dòng)索引 + 批量復(fù)制
Reindex存在的問題
- 如果新的索引沒有提前創(chuàng)建好,并指定字段類型,那么重建后的新索引類型極有可能會(huì)和舊的索引不一致,因?yàn)镋S他會(huì)推斷類型,而推斷錯(cuò)誤率從實(shí)戰(zhàn)來說那是相當(dāng)?shù)母?/li>
Reindex能解決的問題
- 字段類型設(shè)置錯(cuò)了
- 舊的索引分片不合理,想重新分
- 某批數(shù)據(jù)存錯(cuò)了,或只想保留具備指定特性或關(guān)鍵字的數(shù)據(jù),可以根據(jù)條件來重建索引,篩選出符合條件的數(shù)據(jù)進(jìn)行重建,
POST _reindex
{
"source": {
"index":"remind_test", // 舊的源索引名稱
"query": {
"term": {
"summary": "java" // 只重建包含java的數(shù)據(jù)
}
}
},
"dest":{
"index": "remind_new" // 重建后新索引的索引名稱
}
}
- 指向要指定的字段,其余字段想刪掉,也可以使用重建索引
POST _reindex
{
"source": {
"index":"remind_test", // 舊的源索引名稱
"_source": ["id", "title", "name"] // 只重建id, title, name字段,其余字段不要了,則重建后的新索引,只會(huì)有這3個(gè)字段
},
"dest":{
"index": "remind_new" // 重建后新索引的索引名稱
}
}
- 多個(gè)索引庫合并重建(即有多個(gè)索引,想把字段和數(shù)據(jù)整合到一個(gè)大索引中)
== 注意: 如果多個(gè)索引中存在相同的文檔id,合并后只會(huì)保留最后一個(gè),因?yàn)闀?huì)覆蓋掉前面的==
POST _reindex
{
"source": {
"index":["remind_test_1", "remind_test_2", "remind_test_3"], // 舊的多個(gè)源索引名稱
},
"dest":{
"index": "remind_new" // 重建后新索引的索引名稱
}
}
- 擴(kuò)展:索引數(shù)據(jù)沖突如何解決: 使用conflicts參數(shù)
abort: 中止操作。如果復(fù)制中發(fā)生了沖突,即源索引的ID出現(xiàn)相同的,則會(huì)終止整個(gè)重建操作
proceed: 繼續(xù)操作,不會(huì)更新與源索引ID沖突的文檔,可能會(huì)導(dǎo)致目標(biāo)索引中存在沖突的文檔,會(huì)導(dǎo)致數(shù)據(jù)不一致,需要進(jìn)行之后處理
overwrite: 覆蓋操作,發(fā)生沖突時(shí),直接覆蓋,后面的覆蓋前面的
POST _reindex
{
"source": {
"conflicts": "proceed",
"index":["remind_test_1", "remind_test_2", "remind_test_3"], // 舊的多個(gè)源索引名稱
},
"dest":{
"index": "remind_new" // 重建后新索引的索引名稱
}
}
重建索引Remindex注意事項(xiàng)
- reindex要求所有【源/舊】索引的所有文檔啟用_source
- reindex新的索引一定要指定好mapping, shard(分片), replica(副本)數(shù)據(jù), 舊索引的這些配置是不會(huì)賦值到新索引的
單索引數(shù)據(jù)量較大,數(shù)據(jù)同步速度比較慢時(shí),如何處理
- 在真正索引重建之前,最好在測(cè)試環(huán)境進(jìn)行測(cè)試,防止在生產(chǎn)環(huán)境重建失敗,導(dǎo)致多次重建消耗性能
- 評(píng)估好重建后索引大小,硬件配置等可用存儲(chǔ)等因素,確保重建后能過夠成功
- 增加資源,比如CPU, 內(nèi)存等硬件信息,提高reindex操作效率
- 為了避免磁盤IO瓶頸,在進(jìn)行reindex時(shí),可以通過將源索引和目標(biāo)索引放在不同的磁盤上,或者使用更快的SSD提升速度
- 在reindex時(shí),可以將目標(biāo)索引的刷新間隔設(shè)置改為-1, 從而避免不必要的刷新操作,提高reindex效率
- 重點(diǎn):如果單索引數(shù)據(jù)量大,在遷移前,將目標(biāo)索引的副本數(shù)設(shè)置為0, 以加快同步速度,等到遷移后,再修改回來
文章來源地址http://www.zghlxwxcb.cn/news/detail-649390.html
文章來源:http://www.zghlxwxcb.cn/news/detail-649390.html
到了這里,關(guān)于【HBZ分享】ES中的Reindex重建索引的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!