Elasticsearch 升級(jí)記錄

前言

本文記錄的是 ES 1.5.0 升級(jí)到 ES 2.3.3 的過(guò)程。包括升級(jí)要考慮的要點(diǎn)以及升級(jí)過(guò)程中遇到的問(wèn)題。

升級(jí)要點(diǎn)

  1. 數(shù)據(jù)兼容性檢查
  2. 客戶端升級(jí)
  3. 服務(wù)端升級(jí)
  4. ES 插件升級(jí)

準(zhǔn)備工作

  • Java版本: jdk1.8.0_91
  • 系統(tǒng)環(huán)境: CentOS,2.6.32-431.23.3.el6.x86_64
  • Elasticsearch 2.3.3 的 tar 包和 rpm 軟件包

數(shù)據(jù)兼容性檢查

ES 升級(jí)涉及到索引的遷移,有些版本之間差異較大,有可能出現(xiàn)索引不兼容的情況。ES 官方提供了一個(gè)插件工具,用于檢查索引是否兼容。插件 Elasticsearch Migration Helper

客戶端升級(jí)

ES 2.3.3的 Java API 相比 ES 1.5.0 有較大的變化,所以項(xiàng)目的 ES 客戶端代碼需要引入 ES 2.3.3 的 jar 包,修改相應(yīng)的代碼。(升級(jí) jar 包,需要更改的代碼會(huì)有報(bào)錯(cuò)提示,按照這個(gè)改就行了)。API 的更新內(nèi)容可查看:Java API changes

服務(wù)端升級(jí)

Elasticsearch 2.3.3 提供壓縮包和軟件包兩種安裝方式。壓縮包只需解壓,然后進(jìn)入 bin 目錄運(yùn)行 Elasticsearch 腳本。軟件包安裝需要用上 Linux 的包安裝工具(如:rpm),與壓縮包安裝方式相比,軟件包安裝為后面作為 service 運(yùn)行提供了方便的配置。1.5.0 版本要以 service 方式運(yùn)行,需要拷貝一個(gè) service 項(xiàng)目elasticsearch-servicewrapper, 2.3.3則不需要,以軟件包的方式安裝好就可以通過(guò) service 啟動(dòng)。下面我會(huì)介紹兩種安裝方式的具體過(guò)程。

軟件包安裝

  1. 下載軟件包 elasticsearch-2.3.3.rpm,
  2. 安裝 rpm -i elasticsearch-2.3.3.rpm安裝過(guò)程必須有 root 權(quán)限)

完成以上兩個(gè)步驟,運(yùn)行 service elasticsearch start發(fā)現(xiàn)還啟動(dòng)不了。一般是 Java 環(huán)境的配置問(wèn)題。
注意service elasticsearch start必須用 root 運(yùn)行,因?yàn)樵趩?dòng)過(guò)程中會(huì)使用到只有 root 用戶才有權(quán)限的命令(runuser)。

在配置 Java 環(huán)境之前,先了解一下 ES 安裝后的目錄結(jié)構(gòu)
Directory Layout
。軟件包安裝完以后有兩個(gè)非常重要的文件,一個(gè)是 /etc/init.d/elasticsearch,這是 service 運(yùn)行 elasticsearch 的啟動(dòng)腳本;另一個(gè)是/etc/sysconfig/elasticsearch,這是 service 運(yùn)行 elasticsearch 的啟動(dòng)配置文件。啟動(dòng)配置文件的配置項(xiàng)可參考Configuration File

配置 Java 環(huán)境: 2.3.3 要求 Java 1.8,這次升級(jí)用的是jdk1.8.0_91。配置 jdk 有兩種方式:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
java -version

用上面這種方式安裝好以后不需要再配置 Java 環(huán)境,安裝過(guò)程就已經(jīng)配置好了,接下來(lái) service elasticsearch start 啟動(dòng)就行了。
但我們生產(chǎn)環(huán)境部署 Java 程序,一般習(xí)慣于使用非安裝版的 jdk 環(huán)境,在啟動(dòng)時(shí)配置 JAVA_HOME,CLASSPTH,PATH 等環(huán)境變量。2.3 版本的 ES 通過(guò) service 腳本啟動(dòng),在腳本中會(huì)重置JAVA_HOME,PATH 環(huán)境變量,所以在執(zhí)行 service elasticsearch start 命令前設(shè)置環(huán)境變量是無(wú)效的。
原因如下:
/etc/init.d/elasticsearch


/etc/init.d/functions

解決辦法很簡(jiǎn)單。在 /etc/sysconfig/elasticsearch 加入如下配置


啟動(dòng)以后,2.3 默認(rèn)是不允許外部機(jī)器訪問(wèn)的,也不會(huì)自動(dòng)加入集群。要允許外部訪問(wèn)和加入集群,需要在 elasticsearch.yml 配置

discovery.zen.ping.unicast.hosts: 10.173.227.228:9300,10.173.225.74:9300
network.bind_host: 0.0.0.0
network.publish_host: 10.173.227.228

ES 插件升級(jí)

目前常用的幾個(gè)插件如 head、kopf、ik anaylysis 都做了相應(yīng)的更新。其中 ik analysis 的變化較大。還有一點(diǎn)就是 bigdesk 插件在 2.3.3 版本用不了了,作者貌似也沒(méi)有更新的意愿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,954評(píng)論 6 342
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • 介紹 采用rpm的方式安裝elasticsearch,為什么叫避坑安裝。因?yàn)榻鈮喊惭b會(huì)有很多報(bào)錯(cuò),主要是與系統(tǒng)參數(shù)...
    syncwt閱讀 6,910評(píng)論 2 12
  • 我走了,上大學(xué)去了。所謂的大學(xué),不過(guò)是一個(gè)三、四流的專科學(xué)校。以至于我畢業(yè)后從來(lái)不說(shuō)“我上大學(xué)時(shí)怎樣怎樣”。 三年...
    凌之微光閱讀 335評(píng)論 8 8
  • 上一篇,我寫了《提高孩子的情商,你需要這么做》,很多人說(shuō)希望下一篇寫寫成年人怎么提高情商。 一位朋友在轉(zhuǎn)發(fā)時(shí)寫道:...
    三人行必有吳師閱讀 406評(píng)論 1 7