在学习Elasticsearch 时候,因为各个版本的问题,搞不清,非常的头疼,官方也给出了各个版本更新的情况,不过是英文版本,版本更新信息又特别多,最近学习,看了很多资料,没有一个整理很清楚的,然后自己就统一整理下,首先声明下面的整理都是各个版本个人认为比较重要点,因为每个大版本更新内容太多,也不能一一举例,详细需要参阅官方文档,文章底部有链接,我也是为了自己方便在整体上,了解Elasticsearch 各个版本的迭代,可以更好的理解和使用Elasticsearch 产品,所以有了这篇文章。

### 初始版本 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脚本
* 移除 site plugins ,就是说 head 、 bigdesk 都不能直接装 es 里面了,不过可以部署独立站点(反正都是静态文件)或开发 kibana 插件
* 新增 Sliced Scroll类型,现在Scroll接口可以并发来进行数据遍历了。每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,利用Scroll重建或者遍历要快很多倍。
* 新增了Profile API
* 新增了Rollover API
* 新增Reindex
* 提供了第一个Java原生的REST客户端SDK
基于HTTP协议的客户端对Elasticsearch的依赖解耦,没有jar包冲突,提供了集群节点自动发现、日志处理、节点请求失败自动进行请求轮询,充分发挥Elasticsearch的高可用能力
* 引入新的字段类型 Text/Keyword 来替换 String
* 限制索引请求大小,避免大量并发请求压垮 ES
* 限制单个请求的 shards 数量,默认 1000 个

### 新特性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日发布,重要特性:
* 集群连接变化:TransportClient被废弃
以至于,es7的java代码,只能使用restclient。然后,个人综合了一下,对于java编程,建议采用 High-level-rest-client 的方式操作ES集群
* ES程序包默认打包jdk:
以至于7.x版本的程序包大小突然边300MB+
对比6.x发现,包大了200MB+, 正是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
* 引入了真正的内存断路器,它可以更精准地检测出无法处理的请求,并防止它们使单个节点不稳定
* Zen2 是 Elasticsearch 的全新集群协调层,提高了可靠性、性能和用户体验,变得更快、更安全,并更易于使用
* 新功能
* New Cluster coordination
* Feature - Complete High Level REST Client
* Script Score Query
* 性能优化
* Weak-AND算法提高查询性能
* 默认的Primary Shared数从5改为1,避免Over Sharding
* 更快的前 k 个查询
* 间隔查询(Intervals queries)
某些搜索用例(例如,法律和专利搜索)引入了查找单词或短语彼此相距一定距离的记录的需要。
Elasticsearch 7.0中的间隔查询引入了一种构建此类查询的全新方式,与之前的方法(跨度查询span queries)相比,使用和定义更加简单。
与跨度查询相比,间隔查询对边缘情况的适应性更强。

### 总结
通过各个版本的迭代升级会发现,Elasticsearch 的产品的重大改善体验,了解了版本间的不同,会让你认知提高一个档次,网上文章一大片,有的时候你发现,文章作者操作的时候成功的,到了你这里就失败了,百思不得其中的奥秘,或者我的一个方法或者对象怎么就没了,谁对谁错,没有定论,懂得事情的本质才是重点,回到问题的根源,才是解决问题的根本。

希望本篇的介绍可以让你在学习 Elasticsearch 的路上更顺畅,等你学完了Elasticsearch最新版本后,回过头来再看这篇文章的时候,感觉是不是一样的,我觉得学习一门技术的时候,心里要对全部轮廓有个认知,不至于钻进一个空间,看不到整个森林的尴尬无效的境地。
就像本文标题所说,先看整个森林,再去钻研一课树木,才会更懂。
### END

如有收获,请帮忙转发,后续会有更好文章贡献,您的鼓励是作者最大的动力!

> 欢迎关注我的公众号:架构师的修炼,获得独家整理的学习资源和日常干货推送。

参考文章:
* [官方文档 Elasticsearch7.0.0版本更新notes](https://www.elastic.co/guide/en/elasticsearch/reference/7.0/release-notes-7.0.0.html)
* [Elasticsearch Reference 官方文档,英文好的可以进入](https://www.elastic.co/guide/en/elasticsearch/reference/index.html)
* [01ElasticSearch简介及其发展历史](https://blog.csdn.net/qq_34829447/article/details/99687377)
* [Lucene的版本迭代](https://blog.csdn.net/jiangchao858/article/details/78897818)

先森林后树木:Elasticsearch各版本升级核心内容必看的更多相关文章

  1. ElasticSearch入门及核心概念介绍

      Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识和原理以初学者的角度记录下来,如有不当,烦请指正! 0. 带着问题上路——ES是如何产生的? (1)思考:大 ...

  2. Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)

    Elasticsearch之重要核心概念如下: 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是 ...

  3. ES6/ES2015核心内容

    ECMAScript定义了: JS语言语法 – 语法解析规则.关键字.语句.声明.运算符等. 类型 – 布尔型.数字.字符串.对象等. 原型和继承 内建对象和函数的标准库 – JSON.Math.数组 ...

  4. [转] 《高性能HTML5》读后整理的Web性能优化内容

    读后感 先说说<高性能HTML5>这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影.个人觉得作者应该首先把HT ...

  5. struts2框架的核心内容

     Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Ac ...

  6. 30分钟掌握ES6/ES2015核心内容

    30分钟掌握ES6/ES2015核心内容   ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript ...

  7. Python编程核心内容之一——Function(函数)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 截至上篇随笔<Python数据结构之四--set(集合)>,Python基础知识也介绍好了.接下来准备干 ...

  8. Python编程核心内容 ---- Function(函数)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 截至上篇随笔<Python数据结构之四——set(集合)>,Python基础知识也介绍好了.接下来准备干 ...

  9. vue - vue基础/vue核心内容

    终于算是顺利进入vue了,确实也只有学了过后才知道,之前三过vue而不学,确实是对的,现在进来了一点都不后悔,ajax.node.js.promise.webpack.git等等确实是除了三大基础外还 ...

随机推荐

  1. 给 asp.net core 写个中间件来记录接口耗时

    给 asp.net core 写个中间件来记录接口耗时 Intro 写接口的难免会遇到别人说接口比较慢,到底慢多少,一个接口服务器处理究竟花了多长时间,如果能有具体的数字来记录每个接口耗时多少,别人再 ...

  2. APPARENT DEADLOCK!!!c3p0数据库连接池死锁问题

    项目进行压力测试的时候,运行大概1小时候,后台抛出以下异常: Nov 9, 2012 1:41:59 AM com.mchange.v2.async.ThreadPoolAsynchronousRun ...

  3. map()函数映射

    map()函数(映射) pattern = "abba" str = "dog cat cat dog" res=str.split() print(list( ...

  4. c# autofac结合WebApi的使用

    一.下载相关类库引用 install-package Autofac install-package Autofac.Mvc4 install-package Autofac.WebApi2 二.配置 ...

  5. JIra配置权限方案

    目录: 添加用户 添加用户组 将用户分配到不同的组中 创建项目权限方案 配置项目采用的权限方案 1. 添加用户 1)使用admin权限的账户登录后,点击右上角的配置,选择system 2)在打开的页面 ...

  6. gym/102059/problem/I. Game on Plane SG函数做博弈

    传送门: 题意: 给定一个正n边形的点.双方轮流连点成线,要求所画的线不能与之前的线相交.当某个人连成一个回路,这个人就输了.问先手必胜还是后手必胜. 思路: SG函数,因为一条线相当于把图劈成了两半 ...

  7. Codeforces Round #506 (Div. 3) 1029 D. Concatenated Multiples

    题意: 给定n个数字,和一个模数k,从中选出两个数,直接拼接,问拼接成的数字是k的倍数的组合有多少个. 思路: 对于a,b两个数,假定len = length of (b),那么a,b满足条件就是a ...

  8. 牛客小白月赛4 C 病菌感染 dfs

    链接:https://www.nowcoder.com/acm/contest/134/C来源:牛客网 题目描述 铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们. 培养皿可 ...

  9. hdu 3065病毒侵袭持续中(ac自动机)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3065 中文题题意不解释了. 依旧稍微改一下ac自动机模版就能过了.还有一个坑点!是多组数据!!! #i ...

  10. 【Nginx】基于Consul+Upsync+Nginx实现动态负载均衡

    一.Http动态负载均衡 什么是动态负载均衡 动态负载均衡实现方案 常用服务器注册与发现框架 二.Consul快速入门 Consul环境搭建 三.nginx-upsync-module nginx-u ...