zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Elasticsearch教程(33) ES优化总结

ESelasticsearch教程 优化 总结 33
2023-09-27 14:26:50 时间

这里暂不考虑ES的集群优化,一般在公司里有专门的运维去维护和优化ES集群,而且每个客户现场的硬件条件各不相同,不好强求客户去升级他的硬件。

这里只是从开发和设计人员的角度去看如何尽量提高ES的性能,避免掉进常见的坑。

优化设计

● 要理解mapping的字段属性,知道如何选择text还是keyword还是int,枚举字段用keyword
● 不要对text类型排序聚合,不要设置fielddata=true,应使用复合字段,ES6后指定预排序
● 知道字段是否要索引,index属性,例如备注remark
● 无需聚合或排序的字段, 需要把doc_values设为false, 节约磁盘空间
● 应用代码中使用索引的别名,方便修改mapping的字段类型
● 采取冷热分离机制,热数据存储到 SSD,冷数据定期压缩
● 数据预热,自己主动访问刷到filesystem cache中
● 数据量大,动态索引,index_时间
● 扩大内存, filesystem cache越大越好,减少走磁盘
● 少量数据需要检索,es + hbase架构
● 避免深分页, 用Scroll 或是 Search After

写入优化

● 尽量使用自动生成的 id
● 大批量写入,采取批量写入
● 大批量写入,副本数设置为0,以后再修改

查询优化

● 禁用wildcard
● 禁用terms查询上千数据
● 如果不要评分,使用filter代替query
● 设置合理的路由机制
● 聚合时:collect_mode深度优先/广度优先的选择