简单说说关于elasticsearch各个大版本之间的区别
- 初始版本0.7
- 发布时间:2010.05.14
- 主要特性
- Zen Discovery 自动发现模块
- Groovy Client支持
- 简单的插件管理机制
- 更好支持ICU分词器
- 更多的管理API
- 1.x版本
- 发布时间:2014.02.14
- 主要特性
- 支持聚合分析Aggregations
- Snapshot/Restore API 备份恢复API
- CAT API 支持
- 支持联合查询
- Doc values 引入
- 2.x版本
- 发布时间:2015.10.28
- 主要特性
- 增加了 pipleline Aggregations
- query/filter 查询合并,都合并到query中,根据不同的上下文执行不同的查询
- 存储压缩可配置
- Rivers 模块被移除
- Multicast 组播发现被移除,成为一个插件,生产环境必须配置单播地址
- 支持root用户启动
- 5.x版本(大转折)
- 发布时间: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.x版本
- 发布时间:2017.08.31
- 主要特性
- 稀疏性 Doc Values 的支持
- Index sorting,即索引阶段的排序
- Removal of types,在 6.0 里面,开始不支持一个 index 里面存在多个 type
- 已经关闭的索引将也支持 replica 的自动处理,确保数据可靠
- Load aware shard routing, 基于负载的请求路由,目前的搜索请求是全节点轮询,那么性能最慢的节点往往会造成整体的延迟增加,新的实现方式将基于队列的耗费时间自动调节队列长度,负载高的节点的队列长度将减少,让其他节点分摊更多的压力,搜索和索引都将基于这种机制。
- 顺序号的支持,每个 es 的操作都有一个顺序编号(类似增量设计)无缝滚动升级
- 7.x版本
- 发布时间: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)相比,使用和定义更加简单。 与跨度查询相比,间隔查询对边缘情况的适应性更强
- 支持arm平台的包下载,包括kibana,logstash