1. 集群连接变化:Transport Client被废弃
ES7中,只能使用rest client。
2. 数据存储结构变化:废弃type
ES6时,官方提到ES7会删除type,并且ES6时已经规定每一个index只能有一个type。在ES7中使用默认的_doc作为type,官方说在8.x版本会彻底移除type。
同时,api请求方式也发送变化,如获得某索引的某ID的文档:GET index/_doc/id其中index和id为具体的值。
3. High-level REST client 改变
已删除接受Header参数的API方法,Cluster Health API默认为集群级别。
4. ES程序包默认打包jdk:7.x版本的程序包大小300MB+
对比6.x发现,包大了200MB+, 正是JDK的大小。
5. 默认配置变化:默认节点名称为主机名,默认分片数改为1,不再是5
6. 查询相关性速度优化:Weak-AND算法
核心原理:取TOP N结果集,估算命中记录数。
简单来说,一般我们在计算文本相关性的时候,会通过倒排索引的方式进行查询,通过倒排索引已经要比全量遍历节约大量时间,但是有时候仍然很慢。
原因是很多时候我们其实只是想要top n个结果,一些结果明显较差的也进行了复杂的相关性计算,
而weak-and算法通过计算每个词的贡献上限来估计文档的相关性上限,从而建立一个阈值对倒排中的结果进行减枝,从而得到提速的效果。
7. 间隔查询(Intervals queries)
某些搜索用例(例如,法律和专利搜索)引入了查找单词或短语彼此相距一定距离的记录的需要。
Elasticsearch 7.0中的间隔查询引入了一种构建此类查询的全新方式,与之前的方法(跨度查询span queries)相比,使用和定义更加简单。
与跨度查询相比,间隔查询对边缘情况的适应性更强。
8. 引入新的集群协调子系统
移除 minimum_master_nodes 参数,让 Elasticsearch 自己选择可以形成仲裁的节点。典型的主节点选举现在只需要很短的时间就可以完成。
集群的伸缩变得更安全、更容易,并且可能造成丢失数据的系统配置选项更少了。
节点更清楚地记录它们的状态,有助于诊断为什么它们不能加入集群或为什么无法选举出主节点。
9. 时间戳纳秒级支持,提升数据精度
10. 不再内存溢出
新的 Circuit Breaker 在JVM 堆栈层面监测内存使用,Elasticsearch 比之前更加健壮。设置indices.breaker.fielddata.limit的默认值已从JVM堆大小的60%降低到40%。
网友评论