【es】es數(shù)據(jù)遷移之reindex

一渔呵、背景

1. 當(dāng)你的數(shù)據(jù)量過大怒竿,而你的索引最初創(chuàng)建的分片數(shù)量不足,導(dǎo)致每個(gè)分片上承載的數(shù)據(jù)量太大扩氢,數(shù)據(jù)入庫變慢耕驰,此時(shí)需要擴(kuò)大分片的數(shù)量,而索引的分片數(shù)一旦創(chuàng)建录豺,就無法修改

2. 當(dāng)數(shù)據(jù)的mapping需要修改朦肘,但是大量的數(shù)據(jù)已經(jīng)導(dǎo)入到索引中了,重新導(dǎo)入數(shù)據(jù)到新的索引太耗時(shí)双饥,但是在es中一個(gè)字段的mapping在定義并且導(dǎo)入數(shù)據(jù)之后是不能再修改的

這些情況下媒抠,你就需要考慮嘗試使用reinde,重建索引了咏花。

es提供了_reindex這個(gè)API趴生,相對(duì)于我們重新導(dǎo)入數(shù)據(jù)肯定會(huì)快不少,實(shí)測(cè)速度大概是bulk導(dǎo)入數(shù)據(jù)的5-10倍昏翰。



二苍匆、關(guān)于reindex


5.x版本后新增Reindex。

Reindex可以直接在Elasticsearch集群里面對(duì)數(shù)據(jù)進(jìn)行重建矩父,如果你的mapping因?yàn)樾薷亩枰亟鄙#只蛘咚饕O(shè)置修改需要重建的時(shí)候,借助Reindex可以很方便的異步進(jìn)行重建窍株,并且支持跨集群間的數(shù)據(jù)遷移民轴。比如按天創(chuàng)建的索引可以定期重建合并到以月為單位的索引里面去。

當(dāng)然索引里面要啟用_source球订。


reindex和snapshot的速率極慢后裸,是否有辦法改善?


reindex和snapshot的速率比用filebeat或者kafka到es的寫入速率慢好幾個(gè)數(shù)量級(jí)(集群寫入性能不存在瓶頸)冒滩,reindex/snapshot的時(shí)候CPU還是IO使用率都很低微驶,是不是集群受什么參數(shù)限制了reindex和snapshot的速率?


reindex不管是跨集群還是同集群上都很慢开睡,大約3~5M/s的索引速率因苹,會(huì)是什么原因?qū)е碌模?/p>


數(shù)據(jù)量幾十個(gè)G的場(chǎng)景下,elasticsearch reindex速度太慢篇恒,從舊索引導(dǎo)數(shù)據(jù)到新索引扶檐,當(dāng)前最佳方案是什么?




三胁艰、使用reindex數(shù)據(jù)遷移


1款筑、創(chuàng)建新的索引

注意:在創(chuàng)建索引的時(shí)候要把表結(jié)構(gòu)也要?jiǎng)?chuàng)建好(也就是mapping).

2智蝠、復(fù)制數(shù)據(jù)

使用最簡(jiǎn)單、基本的方式奈梳。


1)代碼請(qǐng)求:

2)利用命令

$? curl? -X? POST? 'xx.xx.xx.xx:9200/_reindex'? -d {"source":{"index":"old_index"},"dest":{"index":"new_index"}}


如果新的index中有數(shù)據(jù)杈湾,并且可能發(fā)生沖突,那么可以設(shè)置version_type? ? "version_type": "internal"? 或者不設(shè)置攘须,則Elasticsearch強(qiáng)制性的將文檔轉(zhuǎn)儲(chǔ)到目標(biāo)中漆撞,覆蓋具有相同類型和ID的任何內(nèi)容。


數(shù)據(jù)遷移效率


如果我們只是進(jìn)行少量的數(shù)據(jù)遷移利用普通的reindex就可以很好的達(dá)到要求阻课,但是當(dāng)我們發(fā)現(xiàn)我們需要遷移的數(shù)據(jù)量過大時(shí)叫挟,我們會(huì)發(fā)現(xiàn)reindex的速度會(huì)變得很慢艰匙。

數(shù)據(jù)量幾十個(gè)G的場(chǎng)景下限煞,elasticsearch reindex速度太慢,從舊索引導(dǎo)數(shù)據(jù)到新索引员凝,當(dāng)前最佳方案是什么署驻?


reindex的核心做跨索引、跨集群的數(shù)據(jù)遷移健霹。


慢的原因及優(yōu)化思路無非包括:

1)批量大小值可能太小旺上。需要結(jié)合堆內(nèi)存、線程池調(diào)整大刑锹瘛宣吱;

2)reindex的底層是scroll實(shí)現(xiàn),借助scroll并行優(yōu)化方式瞳别,提升效率征候;

3)跨索引、跨集群的核心是寫入數(shù)據(jù)祟敛,考慮寫入優(yōu)化角度提升效率疤坝。


可行方案:


1、提升批量寫入大小值馆铁。

默認(rèn)情況下跑揉,_reindex使用1000進(jìn)行批量操作,您可以在source中調(diào)整batch_size埠巨。

批量大小設(shè)置的依據(jù):

1历谍、使用批量索引請(qǐng)求以獲得最佳性能。

批量大小取決于數(shù)據(jù)辣垒、分析和集群配置望侈,但一個(gè)好的起點(diǎn)是每批處理5-15 MB。

注意乍构,這是物理大小甜无。文檔數(shù)量不是度量批量大小的好指標(biāo)扛点。

例如,如果每批索引1000個(gè)文檔:

1)每個(gè)1kb的1000個(gè)文檔是1mb岂丘。

2)每個(gè)100kb的1000個(gè)文檔是100 MB陵究。

這些是完全不同的體積大小。


2奥帘、逐步遞增文檔容量大小的方式調(diào)優(yōu)铜邮。

1)從大約5-15 MB的大容量開始,慢慢增加寨蹋,直到你看不到性能的提升松蒜。然后開始增加批量寫入的并發(fā)性(多線程等等)。

2)使用kibana已旧、cerebro或iostat秸苗、top和ps等工具監(jiān)視節(jié)點(diǎn),以查看資源何時(shí)開始出現(xiàn)瓶頸运褪。如果您開始接收EsRejectedExecutionException惊楼,您的集群就不能再跟上了:至少有一個(gè)資源達(dá)到了容量。要么減少并發(fā)性秸讹,或者提供更多有限的資源(例如從機(jī)械硬盤切換到ssd固態(tài)硬盤)檀咙,要么添加更多節(jié)點(diǎn)。


3璃诀、借助scroll的sliced提升寫入效率


Reindex支持Sliced Scroll以并行化重建索引過程弧可。 這種并行化可以提高效率,并提供一種方便的方法將請(qǐng)求分解為更小的部分劣欢。

sliced原理(from medcl)

1)用過Scroll接口吧棕诵,很慢?如果你數(shù)據(jù)量很大氧秘,用Scroll遍歷數(shù)據(jù)那確實(shí)是接受不了年鸳,現(xiàn)在Scroll接口可以并發(fā)來進(jìn)行數(shù)據(jù)遍歷了。

2)每個(gè)Scroll請(qǐng)求丸相,可以分成多個(gè)Slice請(qǐng)求搔确,可以理解為切片,各Slice獨(dú)立并行灭忠,利用Scroll重建或者遍歷要快很多倍膳算。


slicing使用舉例

slicing的設(shè)定分為兩種方式:手動(dòng)設(shè)置分片、自動(dòng)設(shè)置分片弛作。手動(dòng)設(shè)置分片參見官網(wǎng)涕蜂。

自動(dòng)設(shè)置分片如下:


slices大小設(shè)置注意事項(xiàng):

1)slices大小的設(shè)置可以手動(dòng)指定,或者設(shè)置slices設(shè)置為auto映琳,auto的含義是:針對(duì)單索引机隙,slices大小=分片數(shù)蜘拉;針對(duì)多索引,slices=分片的最小值有鹿。

2)當(dāng)slices的數(shù)量等于索引中的分片數(shù)量時(shí)旭旭,查詢性能最高效。slices大小大于分片數(shù)葱跋,非但不會(huì)提升效率持寄,反而會(huì)增加開銷。

3)如果這個(gè)slices數(shù)字很大(例如500)娱俺,建議選擇一個(gè)較低的數(shù)字稍味,因?yàn)檫^大的slices 會(huì)影響性能。


效果實(shí)踐證明荠卷,比默認(rèn)設(shè)置reindex速度能提升10倍+模庐。



四、參考


使用es reindex api 修改和遷移數(shù)據(jù)腳本

https://blog.csdn.net/weixin_38920212/article/details/102461563


Elasticsearch中refresh_interval參數(shù)

https://zhuanlan.zhihu.com/p/378295340


Elasticsearch Reindex性能提升10倍+實(shí)戰(zhàn)

https://blog.csdn.net/laoyang360/article/details/81589459


吐槽一個(gè)ES-reindex遷移的大坑:reindex中routing=cat

http://www.reibang.com/p/f3cab97074ce


Elasticsearch Reference [5.4] ? Document APIs ? Reindex API

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/docs-reindex.html#docs-reindex


ElasticSearch:Reindex數(shù)據(jù)遷移使用

https://blog.csdn.net/u011487470/article/details/119894530


Elastic如何動(dòng)態(tài)擴(kuò)大主分片僵朗?

https://elasticsearch.cn/question/1904


如果目前索引已存在赖欣,如何增加分片數(shù)量?

https://elasticsearch.cn/question/1430

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末验庙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子社牲,更是在濱河造成了極大的恐慌粪薛,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搏恤,死亡現(xiàn)場(chǎng)離奇詭異违寿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)熟空,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門藤巢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人息罗,你說我怎么就攤上這事掂咒。” “怎么了迈喉?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵绍刮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我挨摸,道長(zhǎng)孩革,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任得运,我火速辦了婚禮膝蜈,結(jié)果婚禮上锅移,老公的妹妹穿的比我還像新娘。我一直安慰自己饱搏,他們只是感情好帆啃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窍帝,像睡著了一般努潘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坤学,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天疯坤,我揣著相機(jī)與錄音,去河邊找鬼深浮。 笑死压怠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飞苇。 我是一名探鬼主播菌瘫,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼布卡!你這毒婦竟也來了雨让?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤忿等,失蹤者是張志新(化名)和其女友劉穎栖忠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贸街,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庵寞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薛匪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捐川。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逸尖,靈堂內(nèi)的尸體忽然破棺而出古沥,到底是詐尸還是另有隱情,我是刑警寧澤冷溶,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布渐白,位于F島的核電站,受9級(jí)特大地震影響逞频,放射性物質(zhì)發(fā)生泄漏纯衍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一苗胀、第九天 我趴在偏房一處隱蔽的房頂上張望襟诸。 院中可真熱鬧瓦堵,春花似錦、人聲如沸歌亲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陷揪。三九已至惋鸥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悍缠,已是汗流浹背卦绣。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留飞蚓,地道東北人滤港。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像趴拧,于是被迫代替她去往敵國(guó)和親溅漾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容