参考文档:
发现一个问题:es官网,不同版本,文档对新特性的描述不在一个位置。
你可以在这个文档找到所有的关于 ES 7.X的新特性:
What’s new in 7.17 | Elasticsearch Guide [7.17] | Elastic
先说说es的官方文档怎么看这些变化和创新点
因为不同版本,新特性和重大变化放在不同的位置
es 7.0 - 7.6 文档都是放在入下图所示:
highlights里边是放的当前版本的亮点(也叫做创新点),breaking changes里放的是重大变化(在原来的基础上发生了变化)。
Release highlights | Elasticsearch Guide [7.0] | Elastic
但是ES 7.7 以后的版本
创新点放在了 如下图所示的位置,what is new 里边。重大变化还是放在了 breaking change里边
当然,我已经把这些都提取出来放在下边了。喜欢看英文的,你可以去看官网。这些都是我自己翻译的,不是机器翻译!
1.1 ES7.X新特性 与 重大变化
1.1.1 ES7.0
- 自适应副本选择。更智能的选择副本。
- refresh刷新策略。在不设置刷新时间的情况下,从原来的默认1s刷新一次,添加一个判断策略,如果30s内没有搜索,则不再refresh。
- 默认配置5个分片,改为1个分片。
- 使用Lucene8, 改进了 top-k 查询的搜索性能 。
- 更好的主节点选举能力,减少脑裂的风险。降低选举的的时间。 移除配置:minimum_master_nodes ,因为此配置对于不熟悉的用户,会加大脑裂的风险。
- CCR跨集群复制,可以理解为数据同步。成为正式版。
- 索引生命周期管理 (ILM) 成为正式版
简单来说,就是可以帮我们滚动创建索引,这有助于维护大索引。将索引拆分。
官网对索引生命周期的介绍
Managing the index lifecycle | Elasticsearch Guide [7.0] | Elastic
- SQL的方式访问es,成为正式版本。
- 添加内存断路器。
修改了桶聚类返回的结果数限制,限制为10000。加上内存断路器。可以有效避免对集群执行毁灭性的查询,造成集群不可用。如果请求加上已经使用的内存大于95%的堆内存,则拒绝请求。
Circuit Breaker | Elasticsearch Guide [7.0] | Elastic
- 支持纳秒级时间戳
- 自带 OpenJDK ,7版本自带jdk11
- JSON格式日志。
1.1.2 ES7.1
- SSL认证免费
- RBAC 角色访问控制免费。
1.1.3 ES7.2
- 关闭的索引分片,可以用户复制和打快照。
- distance_feature 距离查询,仅针对data类型、
date_nanos
查询geo_point
类型字段的查询。比如可以获取更接近某个某个时间的数据。
1.1.4 ES7.3
- 加入新的角色, 新node.voting-only角色 。就是该节点没有资格成为主节点,也可以参与投票。
- 支持动态更新同义词。可以使用API重新加载同义词。
- Painless 脚本支持 计算余弦相似度和查询向量的点积
- Intervals 区间查询,支持前缀和通配符查询
- Rare Terms aggregation 新的聚类,支持聚类出最少出现的词。
- keyword字段上的聚类更节省内存。
- 机器学习里的异常数据检测。
1.1.5 ES7.4
- 限定查询结果以指定顺序返回
用法参看文档:
Pinned Query | Elasticsearch Guide [7.4] | Elastic
- 添加shape 类型。这支持在图形中做搜索。
Shape datatype | Elasticsearch Guide [7.4] | Elastic
- circle ingest processor 将圆处理为规则图形,用于索引和检索。
- histogram aggregation 支持以特定范围来聚类。例如,每五分钟内的订单量,例如某个商品,每降低一元,有多少销量。
- cumulative cardinality aggregation 增量聚合。例如:可以聚类出来每天访问网站的人,并且知道哪些是新增的。
- 快照生命周期管理 (SLM)
- API秘钥管理
- 连接中断,执行的查询任务也停止。
- 内置JDK13
- 机器学习,添加回归分析。
- painless添加 曼哈顿距离(L1 范数)和欧几里德距离(L2 范数) 计算函数。
1.1.6 ES7.5
- SQL 支持es中的图形相关的操作。
- 快照生命周期管理支持配置策略删除快照。
- 远程集群同步支持暂停。
- 机器学习支持分类分析。
1.1.7 ES7.6
- 优化long类型的排序。基准测试结果提升了十倍。
- 简化机器学习操作。
1.1.8 ES7.7
- 修复的缩减分片时的bug。在7.7以前的版本,有可能在缩减分片以后,导致索引损坏。
- 减少段的打开,占用的内存。这意味着一样的内存可以维护更多的段数据。
- 机器学习,分类,从两个类到30多个类。
- 增加聚类时,对内存的控制,防止OOM。
- 增加异步搜索的API
Long-running searches | Elasticsearch Guide [7.7] | Elastic
- boxplot 聚类 :获取最小值、最大值中位数、第一四分位数(第 25 个百分位数)和第三个四分位数(第 75 个百分位数)值
-
top_metrics
aggregation 聚类
Top Metrics Aggregation | Elasticsearch Guide [7.7] | Elastic
- 优化对时间的排序。
1.1.9 ES7.8
- 提供可组合的索引模板
- 加强了地理搜索。 聚合来查找包含与查询匹配的所有形状的边界框
- 提供API支持查看聚类计数。可以看到某些字段执行的次数。
- histogram 提供
value_count
和avg
聚合。 - 降低聚类的内存开销。 尝试通过将聚合的分片结果的反序列化延迟到最后一秒来节省协调节点上的内存 。
1.1.10 ES7.9
- 添加跨集群同步数据重试功能。解决因为断路器导致的异常
- 限制写入速度。 Elasticsearch 和 Lucene 使用堆内存进行缓冲。为了控制内存使用,Elasticsearch 根据您的索引缓冲区设置将数据从缓冲区移动到磁盘。如果持续索引的速度超过了将数据重新定位到磁盘的速度,那么 Elasticsearch 现在将限制索引
- 优化data_histograms,减少内存开销。
- 增加
wildcard
字段类型
1.1.11 ES7.10
- 提升写的速度(说是20%)
- ES7.9基于lucene8.7,优化了存储字段的压缩比率。优化了有0-10%
- 搜索时间点,保留数据现场。这样就可以做这样的优化,将查询和聚类分开,因为通常聚类是慢的,插叙是快的。如果没有查询时间点这个概念,可能数据在这段时间内已经发生改变了。
- 添加协调节点的断路器。
- 添加只用于系统索引的线程池。
1.1.12 ES7.11
- 添加运行时字段
- date histogram aggregation 提升85%性能
- 跨集群复制支持数据流。
什么是数据流:
Data streams | Elasticsearch Guide [7.11] | Elastic
- 自动为小于8G的堆,选择G1参数,来达到更好的性能。
1.1.13 ES7.12
- 添加分析快照存储库能力,以保证换存储库可用。
1.1.14 ES7.13
-
combined_fields
查询 , 用于将多个text
字段作为组合字段进行搜索。 您可以将 combined_fields
查询用作multi_match
查询 cross_fields
类型选项的更简单替代方案。 - terms聚合更快。
1.1.15 ES7.14
- 跨集群EQL搜索
- 异步SQL搜索
- 添加reset job API
- 添加match_only_text 类型字段
- Composite aggregations 滚动聚类,更加节省内存,因为不再使用global ordinals ,因为 global ordinals 可能会占用大量的堆内存。
- 添加terms enum API ,该API可以用来做自动提示。
- 自动更新GeoIP库。用于根据ip获取国家省份城市等信息。
1.1.16 ES7.15
- 添加analyze index disk usage API. 用于分析某个索引(字段)占用磁盘的情况。
- 添加search vector tile API. 可以有助于展示存储在es中的地理空间数据。
- 复合运行时字段。
1.1.17 ES7.16
- SQL语法支持跨集群搜索
- 优化can-match阶段,坚持分片是否包含请求的数据,以前是每个分片发送一个请求,现在是每个节点发送一个请求。解决在过多分片下的花费资源过多问题。
- 缓存对 frozen索引的查询结果。
1.1.18 ES7.17
说明:ES7.17是ES7.X的最后一个兼容版本。