Elasticsearch 写入性能优化有哪些常见手段?

金歌  论坛元老 | 2025-5-23 23:50:03 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1915|帖子 1915|积分 5745

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Elasticsearch 写入性能优化常见手段重要有以下 10 个方向,建议根据具体业务场景组合使用:

  • 批量写入优化


  • 使用_bulk API 批量提交文档
  • 建议每批次 5-15MB 数据量
  • 并发执行多个批量请求

  • 索引配置调优
  1. PUT /my_index
  2. {
  3.   "settings": {
  4.     "index.refresh_interval": "30s",  // 降低刷新频率
  5.     "index.number_of_replicas": 0,    // 写入时禁用副本
  6.     "index.translog.durability": "async" // 异步translog
  7.   }
  8. }
复制代码

  • 硬件资源优化


  • 使用 SSD 磁盘(IOPS 提升 10 倍+)
  • 预留 50% 内存给文件系统缓存
  • 设置合理的 JVM 堆内存(建议不超过 32GB)

  • 文档布局优化


  • 制止嵌套文档(Nested)范例
  • 禁用不需要的字段索引
  1. "my_field": {
  2.   "type": "keyword",
  3.   "index": false  // 不索引该字段
  4. }
复制代码

  • 分片计谋优化


  • 单个分片大小控制在 20-50GB
  • 分片数 = 节点数 × 1.5(写入麋集型场景)
  • 使用 routing 路由写入

  • 线程池调解
  1. thread_pool:
  2.   write:
  3.     size: 16       # 根据 CPU 核数调整
  4.     queue_size: 1000
复制代码

  • 存储优化


  • 禁用 _source 字段(节流 30%+ 存储)
  1. PUT /my_index
  2. {
  3.   "_source": {
  4.     "enabled": false
  5.   }
  6. }
复制代码

  • 合并计谋优化
  1. "index.merge.policy": {
  2.   "max_merged_segment": "5gb",
  3.   "segments_per_tier": 10
  4. }
复制代码

  • 集群架构优化


  • 专用协调节点处理写入请求
  • 冷热分离架构(Hot-Warm)
  • 使用 Ingest Pipeline 预处理数据

  • 监控与诊断
  1. # 查看写入延迟
  2. GET _nodes/hot_threads
  3. # 监控 segment 状态
  4. GET /_cat/segments?v
复制代码
典范优化结果对比:
优化项默认配置优化配置吞吐提升批量写入单文档5MB批次10x+刷新间隔1s30s3x副本数102x线程池队列20010005x 注意事项:

  • 日志类场景建议禁用副本,搜索类场景保留副本
  • 调优后需持续监控 CPU/IO 使用率
  • 定期执行 _forcemerge 减少 segment 数量
  • 7.x+ 版本建议使用时序模式(Time Series)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表