首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >多大才算太大?Elasticsearch的尺寸优化最佳实践

多大才算太大?Elasticsearch的尺寸优化最佳实践

作者头像
点火三周
发布2026-04-15 15:20:09
发布2026-04-15 15:20:09
90
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

多大才算太大?Elasticsearch的尺寸优化最佳实践

在Elasticsearch中没有硬性的大小限制。生产集群可以达到PB级别。然而,“太大”通常会从三个方面表现出来:查询速度超过您的服务水平协议(SLA)、节点达到其分片上限,或者由于所有数据都存储在昂贵的存储层上而导致存储成本过高。本指南将逐一介绍这些信号、重要的数值以及解决方法。

三个真正重要的限制

在节点层面没有硬性的存储上限。Elastic曾展示过单个节点查询1 PiB数据。在早期版本中,每个分片的开销足够高,因此老的经验法则是每GB堆内存不超过20个分片。超过这个限制意味着垃圾收集压力、集群状态更新缓慢以及节点不稳定。在7.x和8.x版本中,通过一系列优化(更紧凑的元数据序列化、有效的缓存、堆外数据结构以及压缩的集群状态)降低了每个分片的开销,以至于在8.3版本中这一规则被弃用,取而代之的是基于字段密度的尺寸优化。

定义您的实际上限的是工作负载类型。20TB冷节点配备31GB堆内存可以舒适地处理审计和保留工作负载,因为访问模式不频繁且以聚合为主。相同的规格用于高并发的文档搜索工作负载则会显得吃力。

操作上需要注意的三个方面:

  • 分片大小:过大的分片会导致查询和恢复速度变慢。
  • 每节点分片数:每个节点都有上限,而索引生命周期管理 (ILM)会自动创建分片,无论您是否跟踪它们。
  • 存储层不匹配:数据在昂贵的快速存储上保留时间过长。

分片大小

目标是每个分片在10GB到50GB之间。官方指南建议将ILM切换触发器设定在每个主分片50GB,建议的最低值为10GB。每个分片保持在2亿个文档以下。

过小的分片会带来不必要的开销:更多的主节点元数据、更多的堆内存消耗、更多的网络流量。过大的分片会导致查询执行缓慢,并且在节点故障后恢复速度变慢,因为Elasticsearch一次只恢复一个分片。

您可以停止使用的一个规则:Elasticsearch 8.3中“每GB堆内存20个分片”的指导原则已被弃用。替代方法更简单:观察下面每节点最多1000个分片的限制,并保持分片大小在10–50 GB范围(或2亿个文档)。

如何监控:

代码语言:javascript
复制






1
2

# 每个分片的大小
GET _cat/shards?&h=index,store&v



显示两个索引名称及其对应存储大小的表格。
显示两个索引名称及其对应存储大小的表格。

显示两个索引名称及其对应存储大小的表格。

分片预算

每个非冻结数据节点支持最多1000个分片。ILM会代表您创建分片。如果您的策略每天滚动五个主分片和一个副本,那么每天会有10个分片。一个节点在大约100天后就会填满,除非您进行更改。

当您接近上限时的选项:

  • 延长滚动间隔:如果分片在时间触发器触发前未达到50GB,可以选择每周或每月滚动。
  • 减少每个索引的分片数:对于较小的日常数据量,一到两个主分片通常足够。请参阅如何增加主分片数以便在需要时重新平衡现有索引。
  • 增加节点数:如果数据量确实需要以完整的分片计数进行每日滚动,请分布到更多节点上。

对于主节点,计划每3000个索引1GB的堆内存。

如何监控:

代码语言:javascript
复制






1
2

# 每个节点的分片数
GET _cat/allocation?h=node,shards&v



alt
alt

存储

搜索速度指南建议将至少一半的系统内存分配给操作系统文件系统缓存,并使用直接附加存储。远程存储通常性能较差。索引速度指南也建议对于写入繁重的工作负载,使用多个本地SSD上的RAID 0。

对于热数据:不要使用网络附加存储(NAS)。NAS在每次读取时增加延迟,并且某些NAS系统无法正确实现POSIX文件系统语义,这可能导致数据损坏。使用本地SSD。

每个存储层的适用方案:

存储层

存储

原因

本地SSD (DAS)

高I/O,低延迟,安全的文件系统语义

HDD可接受

查询压力较低,无主动索引

可搜索快照

无需副本,约50%存储节省

可搜索快照

相比温存储最多可减少20倍(企业版许可证)

如何监控:

代码语言:javascript
复制






1
2

# 每个节点和角色的磁盘使用情况
GET _cat/allocation?h=node,node.role,disk.used,disk.avail,disk.percent&v



显示单个节点磁盘使用情况的表格,包括已用空间、可用空间和使用百分比。
显示单个节点磁盘使用情况的表格,包括已用空间、可用空间和使用百分比。

显示单个节点磁盘使用情况的表格,包括已用空间、可用空间和使用百分比。

在Elastic Cloud上,跳过此部分。您可以为每个存储层选择一个硬件配置文件,Elastic会处理存储配置。

数据层和ILM

四个圆形仪表盘比较热、温、冷和冻存储层的价格和性能。
四个圆形仪表盘比较热、温、冷和冻存储层的价格和性能。

四个圆形仪表盘比较热、温、冷和冻存储层的价格和性能。

索引生命周期管理自动将数据移至存储层:热、温、冷、冻、删除。数据离热存储越远,存储成本越低。

冷和冻存储层使用可搜索快照:

  • (完全挂载):性能与常规索引相当,无需副本,成本约比温存储便宜50%。
  • (部分挂载):相较于温存储最多可减少20倍存储,查询速度较慢,需要企业版许可证。

在大规模情况下,成本差异非常显著。Search Labs基准测试测量了90 TB的数据:全热存储每月花费28,222。热+冻存储架构将这一成本降至每月3,290。

一个典型的ILM策略用于时间序列数据,热窗口为14天:

代码语言:javascript
复制






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": { "max_primary_shard_size": "50gb" }
        }
      },
      "warm": {
        "min_age": "14d",
        "actions": {
          "shrink": { "number_of_shards": 1 }
        }
      },
      "cold": {
        "min_age": "30d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "my_repository"
          }
        }
      },
      "frozen": {
        "min_age": "90d",
        "actions": {
          "searchable_snapshot": {
            "snapshot_repository": "my_repository"
          }
        }
      },
      "delete": {
        "min_age": "365d",
        "actions": { "delete": {} }
      }
    }
  }
}



根据您的查询模式调整min_age值。每周查询的数据可以比每天查询的数据更早移至冷存储。

AutoOps

AutoOps仪表盘显示集群健康状况、事件热图以及热节点和冷节点的资源使用情况。
AutoOps仪表盘显示集群健康状况、事件热图以及热节点和冷节点的资源使用情况。

AutoOps仪表盘显示集群健康状况、事件热图以及热节点和冷节点的资源使用情况。

截至2026年2月,AutoOps对所有Elasticsearch用户免费,无论许可证级别如何。在Elastic Cloud上,它已经启用。对于Elastic自管理、Elastic Cloud Enterprise (ECE)和Elastic Cloud on Kubernetes (ECK)部署,轻量级Elastic Agent可以通过Cloud Connect在大约五分钟内连接您的集群。需要互联网连接;不支持隔离部署。

AutoOps每10秒采样数百个指标,并提供问题的根本原因分析和修复命令。它不会自动应用修复。

仪表盘显示监控集群中热节点和冷节点的事件热图和资源指标。
仪表盘显示监控集群中热节点和冷节点的事件热图和资源指标。

仪表盘显示监控集群中热节点和冷节点的事件热图和资源指标。

对于大型部署,它能检测:

  • • 超出推荐大小范围的分片增长。
  • • 无ILM策略而过于庞大的索引。
  • • 节点间分片不均衡。
  • • 在导致分配失败之前的磁盘水印违规。
  • • 索引拒绝和摄取瓶颈。
  • • 缓慢的查询和大规模聚合导致的断路器触发。

它配备100多个可自定义的警报,并将通知路由到PagerDuty、Slack、Teams或任何Webhook。

结论

关注分片大小(10–50 GB),跟踪ILM滚动时每个节点的分片预算,将热数据放在本地SSD上,并将不常查询的数据使用冷和冻存储层。

在Elastic Cloud上,硬件配置文件和AutoOps会为您处理大部分这些任务。对于自管理部署,这是您的检查清单,Cloud Connect上的AutoOps是您的早期预警系统。如果您不确定您的节点能处理多少数据以适应您的特定工作负载,请使用Rally在承诺硬件规格前对自己的数据进行基准测试。

来源

  • • 调整分片大小
  • • 数据层
  • • Elasticsearch分片和副本指南
  • • 如何减少分片数
  • • 如何增加主分片数
  • • 优化磁盘空间和使用
  • • 可搜索快照基准测试
  • • AutoOps文档
  • • Rally:Elastic的基准测试框架,用于根据您的数据测试集群大小
  • • 优化Elasticsearch存储效率网络研讨会,由Christian Dahlqvist和Alan Woodward主持
  • • 使用Rally正确设置集群大小:由Christian Dahlqvist和Daniel Mitterdorfer主持的网络研讨会,关于基准测试方法
此内容对您有帮助吗?

😔不太有帮助

😐略有帮助

😁非常有帮助

报告问题

📡 更多 Elastic & AI 可观测性干货

关注「点火三周」,第一时间获取最新技术文章

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点火三周 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多大才算太大?Elasticsearch的尺寸优化最佳实践
    • 三个真正重要的限制
    • 分片大小
    • 分片预算
    • 存储
    • 数据层和ILM
    • AutoOps
    • 结论
    • 来源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档