Elasticsearch发展历程:几个大版本之间的差异
1、初始版本0.7
发布时间:2010.05.14
主要特性:
(1)Zen Discovery 自动发现模块
(2)Groovy Client支持
(3)简单的插件管理机制
(4)更好支持ICU分词器
(5)更多的管理API
2、1.0.0版本
发布时间:2014.02.14
主要特性:
(1)支持聚合分析Aggregations
(2)Snapshot/Restore API 备份恢复API
(3)CAT API 支持
(4)支持联合查询
(5)Doc values 引入
3、2.0.0版本
发布时间:2015.10.28
主要特性:
(1)增加了 pipleline Aggregations
(2)query/filter 查询合并,都合并到query中,根据不同的上下文执行不同的查询
(3)存储压缩可配置
(4)Rivers 模块被移除
(5)Multicast 组播发现被移除,成为一个插件,生产环境必须配置单播地址
(6)支持root用户启动
4、5.0.0版本(大转折)
发布时间:2016.10.26
主要特性:
(1)Lucene 6.x 的支持,磁盘空间少一半;索引时间少一半;查询性能提升25%;支持IPV6。
(2)Internal engine级别移除了用于避免同一文档并发更新的竞争锁,带来15%-20%的性能提升
(3)提供了第一个Java原生的REST客户端SDK IngestNode
(4)提供了 Painless 脚本,代替Groovy脚本
(5)新增了Profile API
(6)新增了Rollover API
(7)新增Reindex
(8)提供了第一个Java原生的REST客户端SDK,基于HTTP协议的客户端对Elasticsearch的依赖解耦,没有jar包冲突,提供了集群节点自动发现、日志处理、节点请求失败自动进行请求轮询,充分发挥Elasticsearch的高可用能力
(9)引入新的字段类型 Text/Keyword 来替换 String
(10)限制索引请求大小,避免大量并发请求压垮 ES
(11)限制单个请求的 shards 数量,默认 1000 个
(12)仅支持非root用户启动
5、6.0.0版本
发布时间:2017.08.31
主要特性:
(1)稀疏性 Doc Values 的支持
(2)Index sorting,即索引阶段的排序
(3)Removal of types,在 6.0 里面,开始不支持一个 index 里面存在多个 type
(4)已经关闭的索引将也支持 replica 的自动处理,确保数据可靠
(5)Load aware shard routing, 基于负载的请求路由,目前的搜索请求是全节点轮询,那么性能最慢的节点往往会造成整体的延迟增加,新的实现方式将基于队列的耗费时间自动调节队列长度,负载高的节点的队列长度将减少,让其他节点分摊更多的压力,搜索和索引都将基于这种机制。
(6)顺序号的支持,每个 es 的操作都有一个顺序编号(类似增量设计)无缝滚动升级
6、7.0.0版本
发布时间:2019.04.10
主要特性:
(1)集群连接变化:TransportClient被废弃,以至于es7的java代码只能使用restclient。
(2)Lucene9.0的支持。
(3)正式废除单个索引下多Type的支持,es6时,官方就提到了es7会删除type,并且es6时已经规定每一个index只能有一个type。在es7中使用默认的_doc作为type,官方说在8.x版本会彻底移除type。api请求方式也发送变化,如获得某索引的某ID的文档:GET index/_doc/id,其中index和id为具体的值
(4)7.1开始,Security功能免费使用
(5)默认的Primary Shared数从5改为1,避免Over Sharding
(6)间隔查询(Intervals queries) 某些搜索用例(例如,法律和专利搜索)引入了查找单词或短语彼此相距一定距离的记录的需要。Elasticsearch 7.0中的间隔查询引入了一种构建此类查询的全新方式,与之前的方法(跨度查询span queries)相比,使用和定义更加简单。与跨度查询相比,间隔查询对边缘情况的适应性更强,狭路相逢勇者胜!