ElasticSearch 1.7.2 升級(jí)到 2.X 的流程

ElasticSearch 1.7.2 升級(jí)到 2.X 的流程

之前在做Elasticsearch 1.4.4 到 1.7.2 升級(jí)的過程中, 直接替換ES程序即可, 升級(jí)很平滑.但是這次從1.7.2版本升級(jí)到2.1.0版本就不那么順利了. 下面會(huì)記錄升級(jí)整個(gè)過程中碰到的問題.

升級(jí)步驟

ES集群升級(jí)

這次升級(jí)官方給出了很多Breaking changes, 但是我們可以借助ES一個(gè)插件來幫助我們分析, 現(xiàn)有ES集群需要做出哪些改動(dòng)才可以順利升級(jí)到2.X版本.

  • 插件安裝: ./bin/plugin -i elastic/elasticsearch-migration
    查看原集群中哪些配置和2.x版本沖突, 我們這里碰到的問題是, 在mapping配置里面, 如果是同一個(gè)索引模板中,不同的type,里面如果字段名字有一樣的, 但是字段模塊不一致的需要修改, 即使名字一樣,有的設(shè)置了分詞, 有的設(shè)置了不分詞也是不可以的. 2.x版本的索引壓縮有很大改進(jìn).

  • 下載最新版本

  • 將原版下的 $ES_HOME/config 下的文件全部copy到新版本中

  • 將$ES_HOME/bin/elasticsearch.in.sh elasticsearch 兩個(gè)文件copy到新版本中相應(yīng)的路徑中, 然后修改該文件中elasticsearch.x.x.jar為新版本的jar

  • $ES_HOME/plugins 文件夾copy到新版 $ES_HOME目錄下

  • 針對(duì)IK分詞, 需要安裝最新版本

    • 獲取最新版本并編譯, copy到新版$ES_HOME/plugins/ik下

      git clone https://github.com/medcl/elasticsearch-analysis-ik
      cd elasticsearch-analysis-ik
      mvn clean
      mvn compile
      mvn package
      copy & unzip file  #{project_path}/elasticsearch-analysis-ik/target/releases/elasticsearch-analysis-ik-xxx.zip to your elasticsearch's folder: plugins/ik
      
    • 將ik項(xiàng)目的config/ik中的內(nèi)容copy到y(tǒng)our-es-root/config/ik中

  • 更新 head 插件
    ./bin/plugin install mobz/elasticsearch-head

  • 安裝sql插件
    ./bin/plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/2.1.0/elasticsearch-sql-2.1.0.zip
    如果碰見版本不一致的,需要修改插件內(nèi)部的plugin配置文件, 將其中es版本修改為匹配的.
    安裝該插件后必須要重啟

  • 安裝kopf插件
    './elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf/{branch|version}'

  • elasticsearch.yml 配置文件中的改動(dòng)

    • 去除 index.analysis.analyzer.default.type : "ik"
    • 添加主機(jī)host network.host: 192.168.10.235

    如果配置中有配置自動(dòng)發(fā)現(xiàn)的,注釋掉, 并改為單播模式

    #ping 其它節(jié)點(diǎn)的超時(shí)時(shí)間
    #discovery.zen.ping_timeout: 30s
    #要選出可用master, 最少需要幾個(gè)master節(jié)點(diǎn)
    #discovery.zen.minimum_master_nodes: 2
    discovery.zen.ping.unicast.hosts: "192.168.10.235:9309,192.168.10.236:9309,192.168.10.237:9309"
    
  • 將$ES_HOME/bin/elasticsearch.in.sh 文件中添加如下內(nèi)容

     ES_HEAP_SIZE=8g
     ES_GC_LOG_FILE="/eagleye/data/esdata/logs/esgc.log"
    

    如果使用的是jdk1.8將如下需要做如下改動(dòng)

     # Add gc options. ES_GC_OPTS is unsupported, for internal testing
      if [ "x$ES_GC_OPTS" = "x" ]; then
      #  ES_GC_OPTS="$ES_GC_OPTS -XX:+UseParNewGC"
      #  ES_GC_OPTS="$ES_GC_OPTS -XX:+UseConcMarkSweepGC"
      #  ES_GC_OPTS="$ES_GC_OPTS -XX:CMSInitiatingOccupancyFraction=75"
      #  ES_GC_OPTS="$ES_GC_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
        ES_GC_OPTS="$ES_GC_OPTS -XX:+UseG1GC"
      fi
    
  • 復(fù)制原集群的索引元數(shù)據(jù)到新集群中(重要)
    元數(shù)據(jù)在master節(jié)點(diǎn)的data目錄下, 將該目錄下的所有元數(shù)據(jù)copy到新版本集群中相應(yīng)位置即可

  • 2.1.1版本已經(jīng)將config目錄下的index template移除, 如果是新建索引在原先config/template下的索引模板將不起作用, 如果需要給某個(gè)索引配置模板可以參考官方文檔

  • 關(guān)閉自動(dòng)分片

    curl -XPUT http://192.168.1.2:9200/_cluster/settings -d 
    '{ 
        "transient" : { 
            "cluster.routing.allocation.enable" : "none" 
        } 
    }'
    
  • 同步flush操作
    如果不允許任何丟失, 需要執(zhí)行該操作, 如果可以容忍在短時(shí)間內(nèi)的數(shù)據(jù)丟失, 可以忽略這一步驟

    
    curl -XPOST http://192.168.1.2:9200/_flush/synced
    
  • 需要同時(shí)停止所有集群的es服務(wù), 然后挨個(gè)重啟

    curl -XPOST http://192.168.1.3:9200/_cluster/nodes/_local/_shutdown
    

ES的客戶端升級(jí)

這里主要描述java客戶端的改動(dòng).

  • pom中的es引用變更為

    <dependency>
       <groupId>org.elasticsearch</groupId>
       <artifactId>elasticsearch</artifactId>
       <version>2.1.1</version>
    </dependency>
    

    注意: 該版本依賴google的guava-18.0版本, 我們項(xiàng)目中依賴的guava-15.0導(dǎo)致,spring啟動(dòng)NoSuchClass異常, 需要同時(shí)升級(jí)guava版本

  • 創(chuàng)建客戶端的改動(dòng),下面是具體變更之后的內(nèi)容,官方文檔可以看這具體看這里

    • ESClient變更

       public ESClient(String clusterName, String esNodes) {
          //Settings settings = ImmutableSettings.settingsBuilder()
          Settings settings = Settings.builder()
                  .put("cluster.name", clusterName)
                  .put("client.transport.sniff", false)
                  .build();
          this.client = TransportClient.builder().settings(settings).build();//new TransportClient(settings);
          String[] esNodeList = esNodes.split(",");
          for (String serv : esNodeList) {
              String[] node = serv.split(":");
              if (node.length == 2) {
          //this.client.addTransportAddress(new InetSocketTransportAddress(node[0], Integer.valueOf(node[1])));
                  this.client.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(node[0], Integer.valueOf(node[1]))));
              }
          }
      }
      
      
    • 依賴的jackson版本需要跟著變更

      <fasterxml.jackson.version>2.6.2</fasterxml.jackson.version>
      
    • 查詢代碼需要將所有Filter變更為Query

    • 2.1.1版本中tribe節(jié)點(diǎn)無法加入集群中,具體看Github上針對(duì)這個(gè)問題的issue

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,310評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,566評(píng)論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,055評(píng)論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,303評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,799評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,683評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,899評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,135評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評(píng)論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,528評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,844評(píng)論 2 372

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