ElasticSearch索引升級的小妙招
ElasticSearch 在使用的時(shí)候最麻煩的一點(diǎn)就是重建索引了,比如你改了數(shù)據(jù)類型那么就得重建索引。為了不影響當(dāng)前正在使用的場景,需要有一個(gè)方案能夠平滑升級。
大部分的資料都講的是用 ElasticSearch alias 的方式來實(shí)現(xiàn),今天我們講下結(jié)合配置中心來實(shí)現(xiàn)。
劃重點(diǎn)
配置中心需要有 2 個(gè)配置:
orderIndexNameQuery:order
orderIndexNameJob: order
比如剛開始索引是 order, 我們可以為這個(gè)索引進(jìn)行升級,就跟 API 一樣,增加版本的概念。比如在索引名稱后面增加版本改成 order_v2。
配置中心:
orderIndexNameQuery:order
orderIndexNameJob: order_v2
假設(shè)你有一個(gè) Job 去同步數(shù)據(jù)創(chuàng)建索引,那么這個(gè) Job 中你獲取索引名稱就是 order_v2,先將這個(gè) Job 執(zhí)行一遍,將數(shù)據(jù)同步完成。
此時(shí)查詢的地方都用的是之前的 order, 沒有任何影響。新的索引構(gòu)建完成后直接將配置中心的內(nèi)容修改即可平滑遷移。
orderIndexNameQuery:order_v2
orderIndexNameJob: order_v2
注意:Job 只是全量的數(shù)據(jù)同步,如果你有其他增量的同步邏輯,增量那邊也要進(jìn)行處理,需要雙寫 2 個(gè)索引,否則會出現(xiàn)新增加的數(shù)據(jù)在新的索引丟失的情況。
如果更改到新版本的索引后有問題,還可以及時(shí)修改配置,退到之前的索引上,等運(yùn)行了一段時(shí)間沒問題后再把老的索引刪除掉,釋放空間。
很多場景下,利用配置中心實(shí)時(shí)更新的特性還是可以做很多擴(kuò)展的,非常方便。
關(guān)于作者:尹吉?dú)g,簡單的技術(shù)愛好者,《Spring Cloud 微服務(wù)-全棧技術(shù)與案例解析》, 《Spring Cloud 微服務(wù) 入門 實(shí)戰(zhàn)與進(jìn)階》作者, 公眾號 猿天地 發(fā)起人。
- END -后臺回復(fù)?學(xué)習(xí)資料?領(lǐng)取學(xué)習(xí)視頻
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
