2019-01-25
引用文章:
ELK
掘金
elastic.io
如何提高索引性能
- 批处理 - bulk
ES推荐一次批量请求的大小是10-15MB,个数是1000-5000 - 多线程
因为每次提交是一个等待的IO过程,所有使用多线程提交请求可以提高索引速度,但是要注意:
如果捕获到这个异常,那么意味着请求太快了,就需要适当降速Make sure to watch for TOO_MANY_REQUESTS (429) response codes (EsRejectedExecutionException with the Java client), which is the way that Elasticsearch tells you that it cannot keep up with the current indexing rate.
- 增大刷新次数
这个参数的默认值是1s,这样每秒都会生成一个segment,增大了merge的压力,可以将这个参数值置为30s,这样增大了生成segment的间隔index.refresh_interval
- 取消刷新和副本
在索引数据的时候取消刷新策略和副本备份,可以让索引数据提高很多,在索引结束后,再置回原来值.即设index.refresh_interval 为-1,设index.number_of_replicas 为0 - 使用自动生成的id
因为使用自己生成的id,ES需要每次去检测是否有重复 - 使用SSD
- 设置buffer size
当大量索引数据的时候,确保这个值大于512MB/shardindices.memory.index_buffer_size
默认是10%,如果你的jvm size是10g,那么这个值就是1g.这时是足够的 - 禁掉_field_names
这个字段会增大时间消耗,如果你不使用exists查询的话,可以禁掉它.
网友评论