Elasticsearch 新特性一览

243 阅读2分钟

这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战

乐观并发控制的改进

ES为其存储的每个文档维护一个数字版本字段,该字段随着文档的每次更改而增加1,在ES7之前,API允许使用该字段进行乐观并发控制,即以当前文档版本为条件进行写操作。但是这种方法是有缺陷的,因为版本的值并不总是唯一地代表对文档的更改。如果主节点在处理写入操作时失败,它可能会公开一个版本,然后新的主节点会重用该版本。由于这个问题,内部版本控制不能再使用,而是被一种基于序列号的新方法所取代。参考地址:www.elastic.co/guide/en/el…

索引生命周期管理

索引生命周期管理(Index Lifecycle Management)作为一个beta特性在6.6发布,在7.0GA。索引生命周期管理现在可以管理frozen indices,他作为其cold阶段的一部分,frozen indices是只读的,不能索引它们。每次搜索分片时,ES都会构建冻结索引的每个分片的瞬态数据结构,并在搜索完成后立即丢弃这些数据结构。由于ES不会在内存中维护这些瞬态数据结构,因此冻结索引消耗的堆比普通索引少得多。与其他方式相比,这允许更高的磁盘堆比。也可以对其管理的索引使用CCR功能。

frozen indices详情:www.elastic.co/guide/en/el…

不再内存溢出

ES7加了一个全新的断路器,可以跟踪JVM使用的总内存,如果请求导致预留的内存和实际堆使用量超过95%,则拒绝请求。官方还将更改默认的最大桶数search.max_buckets为10000,这在6及之前的版本中是不受限制的。

另外由于在早期版本的ES中默认启用了doc values,因此对fielddata的需求较少。ES7将该设置的默认值indices.breaker.fielddata.limit已从JVM堆大小的60%降低到40%。