Elasticsearch调优实践
栏目:w66利来安卓版注册 发布时间:2019-08-10 13:06

原标题:Elasticsearch调优实践

布景

Elasticsearch(ES)作为NOSQL+查找引擎的有机结合体,不只有近实时的查询才干,还具有强壮的聚合剖析才干。因此在全文检索、日志剖析、监控体系、数据剖析等范畴ES均有广泛应用。而完好的Elastic Stack体系(Elasticsearch、Logstash、Kibana、Beats),更是供给了数据收集、清洗、存储、可视化的整套解决计划。

本文根据ES 5.6.4,从功用和稳定性两方面,从linux参数调优、ES节点装备和ES运用办法三个视点下手,介绍ES调优的根本计划。当然,ES的调优绝不能混为一谈,需求根据实践事务场景做恰当的取舍和调整,文中的遗漏之处也随时欢迎批评指正。

功用调优

一 Linux参数调优

1. 封闭交流分区,避免内存置换下降功用。 将/etc/fstab 文件中包括swap的行注释掉

2. 磁盘挂载选项

noatime:制止记载拜访时刻戳,进步文件体系读写功用 data=writeback: 不记载data journal,进步文件体系写入功用 barrier=0:barrier确保journal先于data刷到磁盘,上面封闭了journal,这儿的barrier也就没必要敞开了 nobh:封闭buffer_head,避免内核打断大块数据的IO操作

3. 关于SSD磁盘,选用电梯调度算法,由于SSD供给了更智能的恳求调度算法,不需求内核去做剩下的调整 (仅供参考)

二 ES节点装备

conf/elasticsearch.yml文件:

1. 恰当增大写入buffer和bulk行列长度,进步写入功用和稳定性

2. 核算disk运用量时,不考虑正在搬家的shard

在规划比较大的集群中,能够避免新建shard时扫描一切shard的元数据,进步shard分配速度。

翻开全文

三 ES运用办法

1. 操控字段的存储选项

ES底层运用Lucene存储数据,首要包括行存(StoreFiled)、列存(DocValues)和倒排索引(InvertIndex)三部分。大多数运用场景中,没有必要一起存储这三个部分,能够经过下面的参数来做恰当调整:

StoreFiled: 行存,其间占比最大的是source字段,它操控doc原始数据的存储。在写入数据时,ES把doc原始数据的整个json结构体作为一个string,存储为source字段。查询时,能够经过source字段拿到最初写入时的整个json结构体。 所以,假如没有取出整个原始json结构体的需求,能够经过下面的指令,在mapping中封闭source字段或许只在source中存储部分字段,数据查询时仍可经过ES的docvaluefields获取一切字段的值。 留意:封闭source后, update, updatebyquery, reindex等接口将无法正常运用,所以有update等需求的index不能封闭source。 docvalues:操控列存。 ES首要运用列存来支撑sorting, aggregations和s功用,关于没有上述需求的字段,能够经过下面的指令封闭docvalues,下降存储本钱。 index:操控倒排索引。 ES默许关于一切字段都敞开了倒排索引,用于查询。关于没有查询需求的字段,能够经过下面的指令封闭倒排索引。 all:ES的一个特别的字段,ES把用户写入json的一切字段值拼接成一个字符串后,做分词,然后保存倒排索引,用于支撑整个json的全文检索。 这种需求适用的场景较少,能够经过下面的指令将all字段封闭,节省存储本钱和cpu开支。(ES 6.0+以上的版别不再支撑_all字段,不需求设置) fieldnames:该字段用于exists查询,来承认某个doc里边有无一个字段存在。若没有这种需求,能够将其封闭。
服务热线