簡單說說關於elasticsearch各個大版本之間的區別
- 初始版本0.7
- 發布時間:2010.05.14
- 主要特性
- Zen Discovery 自動發現模塊
- Groovy Client支持
- 簡單的插件管理機制
- 更好支持ICU分詞器
- 更多的管理API
- 1.0.0版本
- 發布時間:2014.02.14
- 主要特性
- 支持聚合分析Aggregations
- Snapshot/Restore API 備份恢復API
- CAT API 支持
- 支持聯合查詢
- Doc values 引入
- 2.0.0版本
- 發布時間:2015.10.28
- 主要特性
- 增加了 pipleline Aggregations
- query/filter 查詢合並,都合並到query中,根據不同的上下文執行不同的查詢
- 存儲壓縮可配置
- Rivers 模塊被移除
- Multicast 組播發現被移除,成為一個插件,生產環境必須配置單播地址
- 支持root用戶啟動
- 5.0.0版本(大轉折)
- 發布時間:2016.10.26
- 主要特性
- Lucene 6.x 的支持,磁盤空間少一半;索引時間少一半;查詢性能提升25%;支持IPV6。
- Internal engine級別移除了用於避免同一文檔並發更新的競爭鎖,帶來15%-20%的性能提升
- 提供了第一個Java原生的REST客戶端SDK IngestNode
- 提供了 Painless 腳本,代替Groovy腳本
- 新增了Profile API
- 新增了Rollover API
- 新增Reindex
- 提供了第一個Java原生的REST客戶端SDK,基於HTTP協議的客戶端對Elasticsearch的依賴解耦,沒有jar包沖突,提供了集群節點自動發現、日志處理、節點請求失敗自動進行請求輪詢,充分發揮Elasticsearch的高可用能力
- 引入新的字段類型 Text/Keyword 來替換 String
- 限制索引請求大小,避免大量並發請求壓垮 ES
- 限制單個請求的 shards 數量,默認 1000 個
- 僅支持非root用戶啟動
- 6.0.0版本
- 發布時間:2017.08.31
- 主要特性
- 稀疏性 Doc Values 的支持
- Index sorting,即索引階段的排序
- Removal of types,在 6.0 里面,開始不支持一個 index 里面存在多個 type
- 已經關閉的索引將也支持 replica 的自動處理,確保數據可靠
- Load aware shard routing, 基於負載的請求路由,目前的搜索請求是全節點輪詢,那么性能最慢的節點往往會造成整體的延遲增加,新的實現方式將基於隊列的耗費時間自動調節隊列長度,負載高的節點的隊列長度將減少,讓其他節點分攤更多的壓力,搜索和索引都將基於這種機制。
- 順序號的支持,每個 es 的操作都有一個順序編號(類似增量設計)無縫滾動升級
- 7.0.0版本
- 發布時間:2019.04.10
- 主要特性
- 集群連接變化:TransportClient被廢棄以至於es7的java代碼,只能使用restclient。對於java編程,建議采用 High-level-rest-client 的方式操作ES集群
- ES程序包默認打包jdk
- Lucene9.0的支持
- 正式廢除單個索引下多Type的支持,es6時,官方就提到了es7會刪除type,並且es6時已經規定每一個index只能有一個type。在es7中使用默認的_doc作為type,官方說在8.x版本會徹底移除type。,api請求方式也發送變化,如獲得某索引的某ID的文檔:
GET index/_doc/id
其中index和id為具體的值 - 7.1開始,Security功能免費使用
- ECK-ElasticSearch Operator on Kubernetes,支持k8s
- 支持Zen2 是 Elasticsearch 的全新集群協調層,提高了可靠性、性能和用戶體驗,變得更快、更安全,並更易於使用
- Weak-AND算法提高查詢性能
- 默認的Primary Shared數從5改為1,避免Over Sharding
- 間隔查詢(Intervals queries) 某些搜索用例(例如,法律和專利搜索)引入了查找單詞或短語彼此相距一定距離的記錄的需要。 Elasticsearch 7.0中的間隔查詢引入了一種構建此類查詢的全新方式,與之前的方法(跨度查詢span queries)相比,使用和定義更加簡單。 與跨度查詢相比,間隔查詢對邊緣情況的適應性更強