有一個場景,我必須從多個源導(dǎo)入數(shù)據(jù)(數(shù)百萬條記錄)并將其保存在數(shù)據(jù)庫中。當(dāng)用戶嘗試搜索與該數(shù)據(jù)相關(guān)的任何信息時,他們應(yīng)該在 2-3 秒內(nèi)獲得結(jié)果。為此,我設(shè)計了一個架構(gòu),使用 golang 從多個源導(dǎo)入數(shù)據(jù)并將數(shù)據(jù)推送到 AWS SQS 中。我創(chuàng)建了一個 lambda 函數(shù),當(dāng) AWS SQS 有一些數(shù)據(jù)時會觸發(fā)該函數(shù)。然后,此 lambda 函數(shù)將數(shù)據(jù)推送到 AWS Elastic Search 中。我創(chuàng)建了一個 Rest API,用它向用戶提供結(jié)果。我每天早上都使用 CRON 來做這個導(dǎo)入工作?,F(xiàn)在我的問題是,如果有一批新數(shù)據(jù)到來,我想刪除現(xiàn)有數(shù)據(jù)并用新數(shù)據(jù)替換所有數(shù)據(jù)。我陷入了如何實(shí)現(xiàn)刪除和添加新數(shù)據(jù)部分的困境。我想到了創(chuàng)建一個臨時索引,然后用原來的索引替換它。但問題是我不知道導(dǎo)入何時結(jié)束并可以進(jìn)行此索引切換。
1 回答

一只甜甜圈
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個贊
您所追求的概念是索引別名?;竟ぷ髁鞒淌牵?/p>
將今天的數(shù)據(jù)導(dǎo)入到索引中
my-index-2019-09-16
(例如)。確保導(dǎo)入完成并且工作正常。
將別名指向新索引(這是索引之間的原子切換):
POST?/_aliases {? ???"actions"?:?[ ????????{?"remove"?:?{?"index"?:?"my-index-2019-09-15",?"alias"?:?"my-index"?}?}, ????????{?"add"?:?{?"index"?:?"my-index-2019-09-16",?"alias"?:?"my-index"?}?} ????] }
刪除舊索引。
您將在導(dǎo)入過程中將磁盤空間增加一倍,但否則這應(yīng)該不會出現(xiàn)任何問題,并且只有在數(shù)據(jù)有正確的替換后才刪除數(shù)據(jù)。
- 1 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消