elasticsearch6.x写入优化
translog 调整
冲刷操作是将分段从内存移到磁盘,并清除事务日志
默认的配置是
1 | "index":{ |
也就是说每个请求都会进行flush,这样保证了数据不会丢失,但是写入性能会很差,可以设置为异步,持久化策略为周期性和一定大小的时候flush
1 | "index": { |
这样就调整为60s(sync_interval)刷新一次或者当超过512m(flush_threshold_size)进行刷新
使用批量写入
使用bulk进行批量操作
增加segments的刷新时间
segment作为最小的检索单元,需要将多个segment检索到的数据进行排序合并,调整refresh_interval参数,该时间为文档被索引到数据搜索可见时间间隔,如果对于实时性不那么高的话,可以适当调高,增加该值可以使得更大的部分flush并减少未来的合并压力
刷新之后搜索才能命中新索引的数据
1 | index.refresh_interval: 30s |