簡介
Elasticsearch是當前比較流行的開源的分布式搜索和數據分析引擎,具備易使用、高性能、擴展性強等特點。是ElasticStack的核心組件,以其為核心構建的ELK,已經是日志分析領域的事實標准。Elasticsearch是怎么一步一步發展成熟的呢?
You Know,for Search
2010年2月8日, Shay Banon 發表了一篇博客,說他基於Lucene開發(封裝 ???)了一個分布式搜索引擎,實現了一些功能。。。
0.7.0
2010年5月14日發布,第一個可以查詢到發版信息的版本,重要特性:
- Zen Discovery 自動發現模塊
- Groovy Client支持
- 簡單的插件管理機制
- 更好支持ICU分詞器
- 更多的管理API
1.0.0
2014年2月14日發布,重要特性:
- Snapshot/Restore API 備份恢復API
- 支持聚合分析Aggregations
- CAT API 支持
- 支持聯盟查詢
- 斷路器支持
- Doc values 引入
2.0.0
2015年10月28日發布,重要特性:
- 增加了 pipleline Aggregations
- query/filter 查詢合並,都合並到query中,根據不同的上下文執行不同的查詢
- 存儲壓縮可配置
- Rivers 模塊被移除
- Multicast 組播發現被移除,成為一個插件,生產環境必須配置單播地址
5.0.0
2016年10月26日發布,重要特性:
- Lucene 6.x 的支持,磁盤空間少一半;索引時間少一半;查詢性能提升25%;支持IPV6。
- Internal engine級別移除了用於避免同一文檔並發更新的競爭鎖,帶來15%-20%的性能提升
- Shrink API ,它可將分片數進行收縮成它的因數,如之前你是15個分片,你可以收縮成5個或者3個又或者1個,那么我們就可以想象成這樣一種場景,在寫入壓力非常大的收集階段,設置足夠多的索引,充分利用shard的並行寫能力,索引寫完之后收縮成更少的shard,提高查詢性能
- 提供了第一個Java原生的REST客戶端SDK
- IngestNode,之前如果需要對數據進行加工,都是在索引之前進行處理,比如logstash可以對日志進行結構化和轉換,現在直接在es就可以處理了
- 提供了 Painless 腳本,代替Groovy腳本
6.0.0
2017年8月31日發布,重要特性:
- 稀疏性 Doc Values 的支持
- Index sorting,即索引階段的排序。
- 順序號的支持,每個 es 的操作都有一個順序編號(類似增量設計)
- 無縫滾動升級
- Removal of types,在 6.0 里面,開始不支持一個 index 里面存在多個 type
- Index-template inheritance,索引版本的繼承,目前索引模板是所有匹配的都會合並,這樣會造成索引模板有一些沖突問題, 6.0 將會只匹配一個,索引創建時也會進行驗證
- Load aware shard routing, 基於負載的請求路由,目前的搜索請求是全節點輪詢,那么性能最慢的節點往往會造成整體的延遲增加,新的實現方式將基於隊列的耗費時間自動調節隊列長度,負載高的節點的隊列長度將減少,讓其他節點分攤更多的壓力,搜索和索引都將基於這種機制。
- 已經關閉的索引將也支持 replica 的自動處理,確保數據可靠。
7.0.0
2019年4月10日發布,重要特性:
- 引入了真正的內存斷路器,它可以更精准地檢測出無法處理的請求,並防止它們使單個節點不穩定
- Zen2 是 Elasticsearch 的全新集群協調層,提高了可靠性、性能和用戶體驗,變得更快、更安全,並更易於使用
- 查詢優化
- 更快的前 k 個查詢
- 間隔查詢
- Function score 2.0