ElasticSearch 基于配置文件、settings设置、mapping设置的性能优化
配置文件优化设置
elasticsearch.yml
thread_pool: --bulk使用的线程池方式为fix
bulk:
size: 5 --bulk并发线程总数(与CPU核数相关,最大为CPU核数+1)
queue_size: 1000 --线程池队列总数(越大耗费JVM内存越高)
ES索引settings优化设置
index.refresh_interval: 30s --重要(写入性能很大比例靠该属性)
index.number_of_shards: 5 --默认配置
index.number_of_replicas: 1 --默认配置(将该属性置为0,写入性能也会有提升)
index.translog.flush_threshold_size: 1gb --(事务日志最大量,只有到达该数据量时才进行落盘操作(flush))
index.translog.sync_interval: 30s --事务日志落盘频率
index.translog.durability: async --(translog)异步落盘(会有数据丢失的风险,生产环境最好使用默认值)
index.merge.scheduler.max_thread_count --减少磁盘争用(ssd可以忽略该条设置)
ES索引mappings配置
- 关闭分词
- 关闭_all
- 关闭_source(根据情况进行设置,关闭后元数据无法通过不同查询得到;只能聚合得到数据)
- 将所有string类型的字段设置为keyword