Elastic Stack 5.0升級踩坑記

27號收到了官方發的Elastic Stack 5.0正式發布的郵件,我就去踩坑了。

先說結論,做好測試,謹慎操作

? ES5簡介

這次是個大升級,統一了全家桶版本號,升級了Lucene,發布了對於官方來說非常重要的X-Pack,等等。詳見 Elastic Stack 5.0.0 Released、Breaking changes in 5.0、What"s new in Elasticsearch 5.0。

關於Elastic Search本體,一些值得關注的:

1. Lucene升級到了6.2,搜索方面會有巨大的性能提升。

2. 優化Indexing過程,性能會更加穩定。

3. 新增Ingest Node,用於數據轉換,相當於Elastic Search里內置了一個Logstash。或許有比bulk更好的Indexing性能,有待測試。

? 踩到的坑

1. Copy2.X的elasticsearch.yml到5.0里,大量報錯

1)踩了個"node settings must not contain any index level settings",報錯提示是所有index配置(例如 index.mapper.dynamic)都需要在ES啟動之後通過介面來改。

2)script開頭的配置項也沒了。

3)一些配置項的名字改了,例如 bootstrap.mlockall 改成了 bootstrap.memory_lock。

建議直接在5.0的elasticsearch.yml上面改配置。

另外,./config/ 裡面新增了 jvm.options 和 log4j2.properties,取消了logging.yml。關於內存的配置可以直接在 jvm.options 裡面設,不需要折騰環境變數了。

2. 啟動報錯,提示調高JVM線程數限制

bootstrap checks failed

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解法:

vi /etc/sysctl.conf

vm.max_map_count=262144 #添加這一行

3. 搜索報錯,默認Scripting語言從groovy改成了painless

這個坑藏得好深,讓我困惑了一段時間(都怪我沒有看完What"s New就去折騰升級)...最後改query的lang欄位為painless就過了。

感覺painless的可讀性要好一點。之前寫Function Score Query的時候發現自己想表達的跟實際出來的結果不一樣(也可能是文檔的問題)。

4. 搜索報錯,部分DSL語言格式變了

發現2.X的query在5.0里跑不通了...

最後發現Filter的DSL語言格式改了。

把我坑慘了...

? 關於X-Pack

X-Pack是一套新的擴展。

一直以來,Elastic Search團隊提供的付費插件與服務都感覺不痛不癢。新發布的X-Pack把所有付費痛點打包到一起了,包括許可權控制、更好的數據可視化系統、經常被提出的報表系統等,我認為是Elastic Search商業化非常重要的一步(另一步是Elastic Cloud)。

X-Pack的License(可註冊1年免費License)

由於全家桶都被打包到一起了,安裝上更方便,操作上也非常有整體感。

UI徹底重做了一次,沒有那麼山寨了。

一個問題是,跟Marvel插件一樣,每天還是會生產一個很?大的Index,還是得要有個腳本盯著來刪。

? 性能對比

1. 同樣的機器(硬體、數量)及集群結構(Master Node、Data Node)

2. 同樣的索引結構和分片數量

3. 基本一致的查詢語句(ES5語法有所變化,所以query沒有完全一致)

4. 同樣的數據量

5. 同樣的流量

ES5集群的 CPU Usage 約為ES2集群的 3/4

ES5集群的 Search Latency 約為ES2集群的 2/3

另外,發現ES5的index/update性能也優於ES2,有待量化評測。

? 總結

由於Lucene升級帶來的巨大性能提升,我認為ES5非常值得升級。

但是,

做好測試,謹慎操作!

做好測試,謹慎操作!

做好測試,謹慎操作!


推薦閱讀:

elasticsearch狀態顯示為red,該如何修復索引呢?
學習elasticsearch必須先學習lucene嗎?
elasticsearch,我用ik分詞,搜索"寶馬2012",怎樣只查出即包含「寶馬」又包含「2012」的文章?
Elasticsearch到底能玩多大的數據量?

TAG:Elasticsearch | 搜索引擎 |