2018年Q2, Elasticsearch 更新到6.2版本, 6.3版本還未正式發布,如果准備在生產環境使用,比較推薦使用較老的5.6.x版本或2.x版本,一方面比較穩定、另外資料也比較多
如果使用Java技術棧,你很可能會使用Spring Boot全家桶,當前Spring Boot更新到2.x版本, 默認spring-boot-starter-data-elasticsearch 默認的ES版本為5.6.9;如果你仍然使用Spring Boot 1.x版本,那么默認的Elastisearch版本為2.x
客戶端
Java技術棧目前有三種可以選擇 Node Client, Transport Client, Rest API, 需要注明的是,官方已經標明NodeClient 已經過期,Transport Client 將在7.x版本開始不再支持, 最終會在7.x 統一到Rest API。目前Transport Client使用范圍比較廣;Rest API方式兼容性較好;除非在In-memory模式下運行單元測試,否則不推薦NodeClient
單測測試
如果能使用in-memory 這種方式,那么可以很輕松保證可重測性,很可惜的是,Elasticsearch 5.x版本開始,官方已經開始不證支持im-memory這種方式,而且從Spring Boot官方文檔來看,Spring Boot 2.x版本的文檔中已經去掉了In memory這種方式的描述
升級和遷移
2.x版本數據可以直接遷移到 5.x; 5.X版本的數據可以直接遷移到6.x; 但是2.x版本數據無法直接遷移到6.x
總結
ES 2.x版本
優點:
1. Java技術棧, spring-boot-starter-data-elasticsearch 支持in-memory方式啟動,單元測試開箱即用
2. 當前線上運行的主流版本, 比較穩定
缺點:
1. 版本較老,無法體驗新功能,且性能不如5.x
2. 后期升級數據遷移比較麻煩
3. 周邊工具版本比較混亂;Kinbana等工具的對應版本需要自己查
ES 5.x版本
優點
1. 版本相對較新,性能較好官方宣稱索引吞吐量提升在25%到80%之間,新的數據結構用於存儲數值和地理位置字段,性能大幅提升;5.x版本搜索進行了重構,搜索聚合能力大幅提高
2. 周邊工具比較全,版本號比較友好。 ES官方在5.x時代統一了 ELK體系的版本號
3. 升級到6.x也比較方便
缺點:
1. 官方宣布已不支持In-Memory模式和Node Client已失效, 如果需要使用in-memory方式單測,需要自己手動配置ES版本、spring-data-elasticsearch版本、打開http訪問開關等配置,並行使用REST API訪問