欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ElasticSearch7.X之写入优化

程序员文章站 2022-07-05 14:47:57
...
    业务需求:对写入速度要求高。但是对实时搜索数据可靠性并不高。

加大tranlog flush间隔

降低写阻塞
默认每个请求都flush
index.translog.durability: request
改变:
index.translog.durability: async
设置为async表示translog的刷盘策略按sync_interval配置指定的时间周期进行。
index.translog.sync_interval: 120s
加大translog刷盘间隔时间。默认为5s,不可低于100ms。

index.translog.flush_threshold_size: 1024mb
超过这个大小会导致refresh操作,产生新的Lucene分段。默认值为
512MB。

加大index refresh间隔

降低IO,降低segement merge

默认情况下索引的refresh_interval为1秒,这意味着数据写1秒后就
可以被搜索到,每次索引的refresh会产生一个新的Lucene段,这会导致
频繁的segment merge行为,如果不需要这么高的搜索实时性,应该降低
索引refresh周期,例如:
index.refresh_interval: 120s

调整bulk请求

批量写比一个索引请求只写单个文档的效率高得多,但是要注意bulk请求的整体字节数不要太大,太大的请求可能会给集群带来内存压力,因此每个请求最好避免超过几十兆字节,即使较大的请求看上去执行得更好

shard尽量均匀

优化Lucene建立索引过程

禁用_all
禁用norms