Elasticsearch官檔翻譯——3 突出的版本變化

突出的版本變化

譯者批注:這一章譯者選擇翻譯5.5版本的變化,因為全文主要講解2.x版本,所以有必要了解高版本的新特性
這一章主要討論版本之間的不同,特別是當你要從一個版本遷移數(shù)據(jù)到另一個版本的時候,你需要注意。

通常的規(guī)律:

  • 跨越大版本遷移 —— 例如1.x到2.x —— 需要停集群升級。
  • 小版本遷移 —— 例如1.x到1.y —— 需要滾動升級。
  • 跨越不連續(xù)版本遷移 —— 例如 1.x到5.x —— 不支持
    譯者批注:建議日志類集群可以進行跨版本升級,業(yè)務類集群如果已經(jīng)投入大量使用,就先緩緩吧,數(shù)據(jù)同步又是一個很麻煩的過程,特別是不同業(yè)務要求又不同,牽扯到的人力成本比較高,升級的性價比不高??梢赃x擇搭建新集群接入新業(yè)務,老業(yè)務再有重構需求時一并升級

詳細請看集群升級。


5.5版本變動

忽略隱藏文件夾

之前的版本會跳過plugin目錄下面的隱藏文件夾,這樣會導致?lián)p壞的插件安裝后不會被ES探查到,所以這個寬泛的特性被移除了。

跳過內(nèi)核參數(shù)設置

Elasticsearch在安裝的時候嘗試設置vm.max_map_count參數(shù)(譯者批注:譯者看了下2.2版本的啟動腳本確實有執(zhí)行sysctl -q -w vm.max_map_count=$MAX_MAP_COUNT),在某些系統(tǒng)下可能失敗。在早先的版本,ES接受一個ES_SKIP_SET_KERNEL_PARAMTERS參數(shù)來跳過內(nèi)核參數(shù)設置。從Elasticsearch5.5.0開始,取消這個參數(shù)以及相應的功能,可以通過systemd-sysctl操作來實現(xiàn)相同的效果。

RPM/DEB安裝包在/etc/elasticsearch下配置了 setgid

現(xiàn)在RPM/DEB安裝包中在/etc/elasticsearch里設置了 setgid,這樣任何在/etc/elasticsearch目錄下的文件或子目錄都屬于同一個組(root:elasticsearch)。主要是保證這個目錄下創(chuàng)建的文件都對elasticsearch用戶可讀。

獲取別名和獲取映射 API 返回404

之前的版本,在請求獲取別名 和get mapping 兩個api的時候,無論什么情況都不會返回404。在Elasticsearch5.5版本后,當獲取別名或獲取映射不存在的時候,返回404.

Java API改變

has_child,has_parent,paren_id等查詢都放到了 parent-join模塊。children聚合也放到了這個模塊下。parent-join模塊需要在TransportClient使用的時候加載?;蛘弋斠獎討B(tài)加載模塊時,使用PreBuiltTransportClient替代


5.4版本變動

Delete_By_Query API改變

Delete_By_Query的請求體必須有查詢條件,不包含請求體的Delete_By_Query在6.0.0是不合法的。


5.3版本變動

日志配置

此前的版本Elasticsearch暴露了一個系統(tǒng)參數(shù) es.logs,它包含了系統(tǒng)配置的日志絕對路徑,并且它的前綴用來表示各種日志文件名(主日志文件,過期日志和慢日志)。這個參數(shù)已經(jīng)被下面三個取代了:

  • es.logs.base_path:日志目錄絕對路徑
  • es.logs.cluster_name:默認的各種日志文件名前綴。
  • es.logs.node_name:如果文件名中需要包含節(jié)點名的話,在這里用。
    es.logs參數(shù)已經(jīng)廢棄并將在6.0.0版本移除。

Netty 3 被廢棄

Netty 3中的transport(transport.type=netty3)和Http(http.type=netty3)在6.0.0被廢棄

弱檢查的布爾值被廢棄

布爾值 除了false , “false” 和 true “true” 其他都被廢棄(譯者批注:2.2中有些配置支持使用 yes no)。REST API和映射配置中也廢棄了這種使用方式


5.2版本變動

啟動檢查系統(tǒng)調(diào)用

Elasticsearch自2.1.0版本開始試圖加入系統(tǒng)調(diào)用過濾器。在某些系統(tǒng)中,系統(tǒng)調(diào)用過濾器可能導致失敗。在早先的版本會加入waring日志記錄,但是會繼續(xù)執(zhí)行,可能用戶并不知道這個情況。從5.2.0版本開始加入啟動檢查系統(tǒng)調(diào)用,看是否成功。如果你啟動的時候因為這個檢查而出問題了,你需要檢查是需要修改配置中的系統(tǒng)調(diào)用過濾器,還是自擔后果去掉這個系統(tǒng)調(diào)用過濾器。

系統(tǒng)參數(shù)過濾器配置

簡單說就是bootstrap.seccomp這個參數(shù)被更名為:bootstrap.system_call_filter。前者仍舊支持但是6.0版本會被移除。

Java API刪除了source方法的一些重寫

刪除了以下方法:

  • PutRepositoryRequest#source(XContentBuilder)
  • PutRepositoryRequest#source(String)
  • PutRepositoryRequest#source(byte[])
  • PutRepositoryRequest#source(byte[], int, int)
  • PutRepositoryRequest#source(BytesReference)
  • CreateSnapshotRequest#source(XContentBuilder)
  • CreateSnapshotRequest#source(String)
  • CreateSnapshotRequest#source(byte[])
  • CreateSnapshotRequest#source(byte[], int, int)
  • CreateSnapshotRequest#source(BytesReference)
  • RestoreSnapshotRequest#source(XContentBuilder)
  • RestoreSnapshotRequest#source(String)
  • RestoreSnapshotRequest#source(byte[])
  • RestoreSnapshotRequest#source(byte[], int, int)
  • RestoreSnapshotRequest#source(BytesReference)
  • RolloverRequest#source(BytesReference)
  • ShrinkRequest#source(BytesReference)
  • UpdateRequest#fromXContent(BytesReference)

_timestamp 元數(shù)據(jù)字段改變

timestamp元字段的類型由java.lang.String改成了java.util.Date

5.1版本變動

別名添加了和索引名幾乎相似的校驗規(guī)則

現(xiàn)在別名添加了和索引名幾乎相似的校驗規(guī)則。唯一不同的是別名允許使用大寫字母。意味著別名不允許使用如下規(guī)則:

  • _, -, 或 +開頭
  • 包含這些字符:#, , /, *, ?, ", <, >, |, ,
  • 超過100個UTF編碼字節(jié)
  • 使用 ...

5.1.0版本以前上述規(guī)則的別名還支持,但是現(xiàn)在不支持了。由于使用_aliases API 修改別名實際上是刪除別名再自動重新創(chuàng)建一個,修改別名如果非法也不再支持。

Log4j的依賴版本升級

Log4j的版本從2.6.2升級到2.7。如果你使用transport client,需要更新相應的Log4j版本

節(jié)點本地發(fā)現(xiàn)已經(jīng)移除

節(jié)點本地發(fā)現(xiàn)已經(jīng)移除。這種發(fā)現(xiàn)機制的實現(xiàn),用于內(nèi)部的tribe服務以及在同一個JVM環(huán)境下運行多個節(jié)點的測試。這意味著設置discovery.typelocal啟動elasticsearch將會失敗。

UnicastHostsProvider 現(xiàn)在基于拉的模式

插件基于zen發(fā)現(xiàn)的UnicastHostsProvider現(xiàn)在采用拉的模式。實現(xiàn)DiscoveryPlugin類并覆蓋getZenHostsProviders方法?,F(xiàn)在也可以通過discovery.zen.hosts_provider配置 hosts_provider類型。

ZenPing和主節(jié)點選舉服務的可插拔特性取消

ZenPing還有選舉服務類都不支持可插拔了。有必要的話,要么自己實現(xiàn)發(fā)現(xiàn),要么擴展ZenDiscovery

onModule支持移除

之前通過Guice注入模塊的插件可以實現(xiàn)一個onModule方法。插件中所有自定義onModule方法的實現(xiàn)都被轉換成基于拉的插件。onModule這個hook被移除。
譯者批注:源碼大概看了下,2.2版本中,節(jié)點啟動時先加載插件,然后讀取插件中的onModule方法并把plugin對應的module作為參數(shù)傳遞進去。這個方法并不是plugin類要求繼承的,而是一個約定

索引的stats和節(jié)點的statsAPI中無法識別的參數(shù)

索引和節(jié)點的stats API允許查詢Elasticsearch中無法識別的一些指標。在之前的版本會默認接受這些不識別的參數(shù)(例如 transport)。在5.1.0中這個情況不再發(fā)生;不能識別的參數(shù)將導致請求失敗。5.0.0移除的這個特性在5.1.0以及之后的5.x系列會給出警告,但是6.0之后會和其他不識別的參數(shù)一樣,導致請求失敗。


5.0版本變動

這一張講解5.0的變動,當你遷移集群到這個版本時你要注意。

遷移插件

當你升級到Elasticsearch 5.0后,elasticsearch-migration插件(2.3以上的版本)會幫你發(fā)現(xiàn)需要解決的問題

5.0之前版本創(chuàng)建的索引

Elasticsearch5.0可以解析2.0之后創(chuàng)建的索引,但是2.0之前的索引無法識別,節(jié)點啟動會失敗。

初次啟動Elasticsearch 5.0,他將會自動重命名索引目錄,目錄命名由原來的索引名改成索引的UUID,

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容