目录
一 es 基本原理
基本架构
二 常见问题列举
慢查询怎么办
2.1 如何监控慢查询
常用优化方式
-
检查是否可使用路由
-
检查分片数量。
-
默认5个,shard数量与节点数有直接关系
-
-
检查分片文档数量。
-
不建议超过10亿,
-
-
检查副本数量。
-
推荐为1个,特殊情况另行讨论,比如:对数据可丢失能容忍的场景,可设置为0
-
-
检查字段类型
-
检查是否禁用_all。
-
可提升1倍以上的写入性能,只要是没有一次匹配查询所有字段,就可用禁用,在6.x中默认禁用
-
-
检查是否已经批量写。
-
批量写可提升几倍写入性能
-
-
检查刷新时间。
-
建议为3s以上,该值设置为业务最大容忍的时间长度,可提高写入速度
-
-
检查是否缓存。
-
如果存储空间很小,总存储如果小于所有机器内存之和的一半,则可加载到缓存,大大提高查询效率,可通过“定时任务配置菜单”进行配置
-
-
检查是否存在徒增写。
-
可调整为均匀写
-
-
检查查询语句是否可优化
-
检查查询范围是否过大
2.2 慢写入常用手段
-
根据业务场景,设计合适的字段类型。
-
检查字段是否启用了 norms 和 doc_values
-
初次或重新向集群灌入数据时,可调整刷新时间和副本数量
-
均匀写入
-
批量写入【最常用手段之一】
-
增加refresh时间间隔【最常用手段之一】
-
异步写
-
升级较新版本ElasticSearch
-
避免同一个索引的shard分配到同一个节点上
-
Disable _all
-
禁用_source
-
增加分片,同时增加机器