三人行必有我师

es5.6.8写入性能没有es2.3.4好

Elasticsearch | 作者 paopao | 发布于2018年04月09日 | 阅读数:6149

本想升级es5.6.8提高查询写入性能,但是经过测试后发现还没有es2.3.4写入性能好,咋回事,是不是配置没有对么,都是默认配置
已邀请:

medcl - 今晚打老虎。

赞同来自: laoyang360 hufuman

默认配置情况下,5之后,为了保证数据一致性和数据安全性,很多默认参数会更加严苛,比如 translog 就是每次索引操作就进行 fsync。
这个会比之前影响性能一些,如果需要,你可以调整 index.translog.durability 为 async,文档:
https://www.elastic.co/guide/e ... tings

yayg2008

赞同来自: code4j

以下措施可以提升数据索引性能

批量索引
能使用bulk操作的时候尽量使用。

使用自动生成的ID
每次索引数据的时候,如果指定了id,则ES会去检查该id对应的文档是否存在,然后执行insert或者update操作,这一步会有开销。所以如果数据是append only型的(例如日志),则索引数据时无需指定id,由ES自动生成。相反,如果文档需要get,update,delete等,则需要自行指定id。

异步写translog
特别是机械盘,效果提升明显。

调高refresh间隔
ES内存索引只有refresh之后才能被搜索到(默认1秒refresh一次)。refresh过程会创建新的Lucence segment,且后台会进行segment merge 操作,降低refresh频率,能减少segment的创建跟合并。特定场景下,可以关闭自动refresh,待索引完后手工refresh。
 
 
禁用_all属性
默认开启。
 
不需要索引的字段需要明确指出
ES默认会为所有字段创建索引,如果某些字段从来不需要用来搜索,则mapping时应将其index设置为false。

要回复问题请先登录注册