ElasticSearch 1.7.2 升級到 2.X 的流程

ElasticSearch 1.7.2 升級到 2.X 的流程

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

升級步驟

ES集群升級

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

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

  • 下載最新版本

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

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

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

  • 針對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項目的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 配置文件中的改動

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

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

    #ping 其它節(jié)點的超時時間
    #discovery.zen.ping_timeout: 30s
    #要選出可用master, 最少需要幾個master節(jié)點
    #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將如下需要做如下改動

     # 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é)點的data目錄下, 將該目錄下的所有元數(shù)據(jù)copy到新版本集群中相應(yīng)位置即可

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

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

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

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

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

ES的客戶端升級

這里主要描述java客戶端的改動.

  • pom中的es引用變更為

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

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

  • 創(chuà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é)點無法加入集群中,具體看Github上針對這個問題的issue

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末媳友,一起剝皮案震驚了整個濱河市斯议,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醇锚,老刑警劉巖哼御,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坯临,死亡現(xiàn)場離奇詭異,居然都是意外死亡恋昼,警方通過查閱死者的電腦和手機(jī)看靠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來液肌,“玉大人挟炬,你說我怎么就攤上這事∴露撸” “怎么了谤祖?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長老速。 經(jīng)常有香客問我粥喜,道長,這世上最難降的妖魔是什么橘券? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任额湘,我火速辦了婚禮,結(jié)果婚禮上约郁,老公的妹妹穿的比我還像新娘缩挑。我一直安慰自己,他們只是感情好鬓梅,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布供置。 她就那樣靜靜地躺著,像睡著了一般绽快。 火紅的嫁衣襯著肌膚如雪芥丧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天坊罢,我揣著相機(jī)與錄音续担,去河邊找鬼。 笑死活孩,一個胖子當(dāng)著我的面吹牛物遇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憾儒,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼询兴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了起趾?” 一聲冷哼從身側(cè)響起诗舰,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎训裆,沒想到半個月后眶根,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜀铲,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年属百,在試婚紗的時候發(fā)現(xiàn)自己被綠了记劝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡族扰,死狀恐怖隆夯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情别伏,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布忧额,位于F島的核電站厘肮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏睦番。R本人自食惡果不足惜类茂,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望托嚣。 院中可真熱鬧巩检,春花似錦、人聲如沸示启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夫嗓。三九已至迟螺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舍咖,已是汗流浹背矩父。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留排霉,地道東北人窍株。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像攻柠,于是被迫代替她去往敵國和親球订。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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