Elasticsearch 性能优化?

发布于

一、写入优化

  • 批量写入(Bulk API),减少网络开销。
  • 增加 refresh_interval(如 30s),减少 refresh 频率。
  • 关闭副本,写完再开。
  • 用 SSD 存储。
  • TransLog 异步刷盘。

二、查询优化

  • 用 filter 替代 query 做过滤。
  • 避免深度分页,用 search_after。
  • 只查需要的字段(_source 过滤)。
  • 合理设置分片数,避免分片过多。

三、索引设计

  • 合理映射,避免默认动态映射。
  • keyword 类型精确查询,text 类型全文检索。
  • 大字段 store=false,不存储原始值。
  • 索引生命周期管理(ILM),冷热数据分离。

四、集群优化

  • 主分片数 = 节点数或倍数。
  • 副本数根据读压力和可用性调整。
  • 内存:堆内存不超过 32GB,留给文件系统缓存。
  • 路由:自定义路由,把相关数据放同一分片。

五、常见问题

  • 慢查询:检查查询语句、分片数、索引设计。
  • OOM:检查聚合、深度分页、字段数量。
  • 集群黄/红:检查分片分配、节点状态。