ElasticSearch7.x「新特性」

前言

公司 ELK 系统需要重构,然后我准备尝试把 Es6.x 升级到 Es7.x,了解了一下 ElasticSearch7.x 新特性。

正文

1. 集群连接变化:TransportClient 被废弃

以至于,es7 的 java 代码,只能使用 restclient。然后,个人综合了一下,对于 java 编程,建议采用 High-level-rest-client 的方式操作 ES 集群

2. ES 数据存储结构变化:去除了 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 算法

啥是 weak-and 算法?
核心原理:取 TOP N 结果集,估算命中记录数。

简单来说,一般我们在计算文本相关性的时候,会通过倒排索引的方式进行查询,通过倒排索引已经要比全量遍历节约大量时间,但是有时候仍然很慢。
原因是很多时候我们其实只是想要 top n 个结果,一些结果明显较差的也进行了复杂的相关性计算,
而 weak-and 算法通过计算每个词的贡献上限来估计文档的相关性上限,从而建立一个阈值对倒排中的结果进行减枝,从而得到提速的效果。

7. 间隔查询 (Intervals queries):

某些搜索用例(例如,法律和专利搜索)引入了查找单词或短语彼此相距一定距离的记录的需要。

Elasticsearch 7.0 中的间隔查询引入了一种构建此类查询的全新方式,与之前的方法(跨度查询 span queries)相比,使用和定义更加简单。

与跨度查询相比,间隔查询对边缘情况的适应性更强。

8. 引入新的集群协调子系统

移除 minimum_master_nodes 参数,让 Elasticsearch 自己选择可以形成仲裁的节点。

典型的主节点选举现在只需要很短的时间就可以完成。
集群的伸缩变得更安全、更容易,并且可能造成丢失数据的系统配置选项更少了。

节点更清楚地记录它们的状态,有助于诊断为什么它们不能加入集群或为什么无法选举出主节点。

9. 时间戳纳秒级支持,提升数据精度

利用纳秒精度支持加强时间序列用例

到目前为止,Elasticsearch 仅以毫秒精度存储时间戳。 7.0 增加了几个零并带来了纳秒精度,这提高了高频数据采集用户存储和排序所需数据的精度。

10. 不再内存溢出

新的 Circuit Breaker 在 JVM 堆栈层面监测内存使用,Elasticsearch 比之前更加健壮。

设置 indices.breaker.fielddata.limit 的默认值已从 JVM 堆大小的 60%降低到 40%。

原文链接:https://blog.csdn.net/deaidai/article/details/90523059