默认自适应选择分片
在6.x及以前的版本,请求是会轮询发放给主分片和副本分片的,如果其中一个分片出现了超长的gc,那这时候响应就会很慢。6.1的时候新增了个配置项,可以让es自适应选择性能较好的分片优先查询,但该配置项是默认关闭的,在7.0里该配置项默认打开。
分片搜索空闲时跳过refresh
以前版本的数据插入,每一秒都会有refresh动作,这使得es能成为一个近实时的搜索引擎。但是当没有查询需求的时候,该动作会使得es的资源得到较大的浪费。
在es7中,如果一个分片处于搜索空闲状态(30秒内都没有查询),那么插入数据不会被refresh,直到有一个查询过来触发refresh,或者显示的触发refresh。该改动可以显著的插入索引性能。
默认单分片
往前的版本默认都是5个分片,在数据量有限的情况下,如果是日增索引,那么每天都会有5个索引,会导致索引非常的多,使得master在管理的内存上开销比较大。新版本上变成了默认1个分片。
TYPE
v6.x 版本之前 :
一个index下面是可以创建多个type
v6.x 版本 :
一个index下面只能创建一个type
v7.x 版本 :
index下面不存在type,直接定义properties,包括 API 层面的。
容错机制
master选举,replica容错,数据恢复
(1)9 shard,3 node
(2)master node宕机,自动master选举,red
(3)replica容错:新master将replica提升为primary shard,yellow
(4)重启宕机node,master copy replica到该node,使用原有的shard并同步宕机后的修改,green
不知道容错机制是否有改动,这里是5.x版本的流程。
并发控制
悲观锁:关系型数据库(MySQL),上锁,只有一个线程操作
乐观锁:ES中使用的,版本号,不加锁,操作时判断版本号
_version元数据
external version:自己维护一个版本号来进行并发控制。
?version=1
?version=1&version_type=external
当version_type=external时,只有当你提供的version比es中的version大的时候,才能成功修改。
而使用es中的version的时候,只有相等的时候才能进行操作,否则会报错。




