0停機情況下修改Elasticsearch mapping

使用ElasticSearch 作為搜索模型時有一個很大問題是盗舰,每當更改架構時都必須重新編制索引拜马。數(shù)據(jù)集很大時需要很長的時間阅束,這給我們帶來了很多停機時間殃饿。對于大多數(shù)應用程序來說太多了。

本文將介紹如何在0停機情況下修改Elasticsearch mapping

問題: 為什么不能修改已存在數(shù)據(jù)的字段類型孝扛?

為了使您的數(shù)據(jù)可搜索列吼,數(shù)據(jù)庫需要知道每個字段包含什么類型的數(shù)據(jù)以及應如何對其進行索引。如果將字段類型從a切換string為a date苦始,那么已經為該字段建立索引的所有數(shù)據(jù)將變得無用寞钥。所以您需要重新索引該字段。

這不僅適用于Elasticsearch陌选,而且適用于使用索引進行搜索的任何數(shù)據(jù)庫理郑。而且,如果不使用索引咨油,則會犧牲查詢速度香浩。

Elasticsearch(和Lucene)將其索引存儲在不可變的段中

?-每個段都是一個“微型”反向索引。這些字段永遠不會更新臼勉。更新文檔實際上會創(chuàng)建一個新文檔并將舊文檔標記為已刪除邻吭。文檔(或更新現(xiàn)有文檔),創(chuàng)建新的段宴霸,并在后臺運行合并過程囱晴,將幾個較小的字段合并為一個新的大字段,然后將舊字段完全刪除瓢谢。

通常畸写,Elasticsearch中的索引將包含不同類型的文檔。每個_type都有自己的模式或映射氓扛。一個段可以包含任何類型的文檔枯芬。因此,如果要更改單個類型中單個字段的字段定義采郎,除了重新索引索引中的所有文檔外千所,別無選擇。

Elasticsearch如何修改Mapping

1.添加字段蒜埋,可以使用elasticsearch 的添加字段api添加字段, 這種情況下無需reindex:

將新字段添加到現(xiàn)有索引或更改現(xiàn)有字段的搜索設置淫痰。

PUT /twitter/_mapping

{

"properties": {

"email": {

"type": "keyword"

}

}

}


2.使用_reindex api將文檔復制已定義好Mapping的index中

curl -XPOST localhost:9200/_reindex?pretty -d'{

"source": {

"index": "src"

},

"dest": {

"index": "dest"

}

}

在不停機的狀態(tài)下更新Mapping

索引別名(alias) 使我們能夠靈活地在后臺重新索引數(shù)據(jù),一個別名就像一個符號鏈接可以指向一個或多個真實索引(Index)整份。

典型的工作流程如下待错。首先籽孙,創(chuàng)建一個索引,在名稱后附加一個版本或時間戳:

curl -XPUT localhost:9200/my_index_v1 -H 'Content-Type: application/json' -d '

{ ... mappings ... }


創(chuàng)建一個指向索引的別名:

curl -XPOST localhost:9200/_aliases -H 'Content-Type: application/json' -d '

{

"actions": [

{ "add": {

"alias": "my_index",

"index": "my_index_v1"

}}

]

}

現(xiàn)在火俄,您的應用程序可以像真實索引一樣使用my_index

需要重新索引數(shù)據(jù)時犯建,可以創(chuàng)建新索引,并附加新的版本號:

curl -XPUT localhost:9200/my_index_v2 -H 'Content-Type: application/json' -d '

{ ... mappings ... }

將數(shù)據(jù)從重新索引瓜客,my_index_v1到new my_index_v2 (參考上面reindex內容)适瓦,然后更改myindex別名以指向新索引:

curl -XPOST localhost:9200/_aliases -H 'Content-Type: application/json' -d '

{

"actions": [

{ "remove": {

"alias": "my_index",

"index": "my_index_v1"

}},

{ "add": {

"alias": "my_index",

"index": "my_index_v2"

}}

]

}

最后,刪除舊索引:

curl - XDELETE本地主機:9200 / my_index_v1

這樣就可以在后臺重新索引了所有數(shù)據(jù)忆家,而沒有任何停機時間。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末德迹,一起剝皮案震驚了整個濱河市芽卿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胳搞,老刑警劉巖卸例,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肌毅,居然都是意外死亡筷转,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門悬而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呜舒,“玉大人,你說我怎么就攤上這事笨奠∠龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵般婆,是天一觀的道長到腥。 經常有香客問我,道長蔚袍,這世上最難降的妖魔是什么乡范? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮啤咽,結果婚禮上晋辆,老公的妹妹穿的比我還像新娘。我一直安慰自己宇整,他們只是感情好栈拖,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著没陡,像睡著了一般涩哟。 火紅的嫁衣襯著肌膚如雪索赏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天贴彼,我揣著相機與錄音潜腻,去河邊找鬼。 笑死器仗,一個胖子當著我的面吹牛融涣,可吹牛的內容都是我干的。 我是一名探鬼主播精钮,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼威鹿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轨香?” 一聲冷哼從身側響起忽你,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臂容,沒想到半個月后科雳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡脓杉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年糟秘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球散。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡尿赚,死狀恐怖,靈堂內的尸體忽然破棺而出蕉堰,到底是詐尸還是另有隱情吼畏,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布嘁灯,位于F島的核電站泻蚊,受9級特大地震影響,放射性物質發(fā)生泄漏丑婿。R本人自食惡果不足惜性雄,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望羹奉。 院中可真熱鬧秒旋,春花似錦、人聲如沸诀拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耕挨。三九已至细卧,卻和暖如春尉桩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贪庙。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工蜘犁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人止邮。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓这橙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親导披。 傳聞我的和親對象是個殘疾皇子屈扎,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容

  • 本文將分為三大部分來講es相關的基礎知識點 一、ElasticSearch 基礎概念和組成部分 1)Ela...
    meng_philip123閱讀 6,893評論 3 43
  • 基礎概念 Elasticsearch有幾個核心概念撩匕,從一開始理解這些概念會對整個學習過程有莫大的幫助鹰晨。 接近實時(...
    山天大畜閱讀 2,106評論 0 4
  • ElasticSearch之mapping設置1.mapping類似數(shù)據(jù)庫中的表結構定義,主要作用如下:定義Ind...
    青衣敖王侯閱讀 10,730評論 0 0
  • 一. ES安裝 1.1 本地安裝 下載對應系統(tǒng)的安裝包 下載地址 前臺啟動cd elasticsearch-<ve...
    cvanly閱讀 18,328評論 0 7
  • 馬斯克說:“整日整夜滑沧,沒有孩子并村,沒有朋友巍实,除了工作滓技,一無所有∨锪剩” 王懷南老師在談到創(chuàng)業(yè)的時候說令漂,當你選定一個方向,...
    柯南教英語閱讀 836評論 0 0