在Elasticsearch中没有硬性的大小限制。生产集群可以达到PB级别。然而,“太大”通常会从三个方面表现出来:查询速度超过您的服务水平协议(SLA)、节点达到其分片上限,或者由于所有数据都存储在昂贵的存储层上而导致存储成本过高。本指南将逐一介绍这些信号、重要的数值以及解决方法。
在节点层面没有硬性的存储上限。Elastic曾展示过单个节点查询1 PiB数据。在早期版本中,每个分片的开销足够高,因此老的经验法则是每GB堆内存不超过20个分片。超过这个限制意味着垃圾收集压力、集群状态更新缓慢以及节点不稳定。在7.x和8.x版本中,通过一系列优化(更紧凑的元数据序列化、有效的缓存、堆外数据结构以及压缩的集群状态)降低了每个分片的开销,以至于在8.3版本中这一规则被弃用,取而代之的是基于字段密度的尺寸优化。
定义您的实际上限的是工作负载类型。20TB冷节点配备31GB堆内存可以舒适地处理审计和保留工作负载,因为访问模式不频繁且以聚合为主。相同的规格用于高并发的文档搜索工作负载则会显得吃力。
操作上需要注意的三个方面:
目标是每个分片在10GB到50GB之间。官方指南建议将ILM切换触发器设定在每个主分片50GB,建议的最低值为10GB。每个分片保持在2亿个文档以下。
过小的分片会带来不必要的开销:更多的主节点元数据、更多的堆内存消耗、更多的网络流量。过大的分片会导致查询执行缓慢,并且在节点故障后恢复速度变慢,因为Elasticsearch一次只恢复一个分片。
您可以停止使用的一个规则:Elasticsearch 8.3中“每GB堆内存20个分片”的指导原则已被弃用。替代方法更简单:观察下面每节点最多1000个分片的限制,并保持分片大小在10–50 GB范围(或2亿个文档)。
如何监控:
1
2
# 每个分片的大小
GET _cat/shards?&h=index,store&v

显示两个索引名称及其对应存储大小的表格。
每个非冻结数据节点支持最多1000个分片。ILM会代表您创建分片。如果您的策略每天滚动五个主分片和一个副本,那么每天会有10个分片。一个节点在大约100天后就会填满,除非您进行更改。
当您接近上限时的选项:
对于主节点,计划每3000个索引1GB的堆内存。
如何监控:
1
2
# 每个节点的分片数
GET _cat/allocation?h=node,shards&v

搜索速度指南建议将至少一半的系统内存分配给操作系统文件系统缓存,并使用直接附加存储。远程存储通常性能较差。索引速度指南也建议对于写入繁重的工作负载,使用多个本地SSD上的RAID 0。
对于热数据:不要使用网络附加存储(NAS)。NAS在每次读取时增加延迟,并且某些NAS系统无法正确实现POSIX文件系统语义,这可能导致数据损坏。使用本地SSD。
每个存储层的适用方案:
存储层 | 存储 | 原因 |
|---|---|---|
热 | 本地SSD (DAS) | 高I/O,低延迟,安全的文件系统语义 |
温 | HDD可接受 | 查询压力较低,无主动索引 |
冷 | 可搜索快照 | 无需副本,约50%存储节省 |
冻 | 可搜索快照 | 相比温存储最多可减少20倍(企业版许可证) |
如何监控:
1
2
# 每个节点和角色的磁盘使用情况
GET _cat/allocation?h=node,node.role,disk.used,disk.avail,disk.percent&v

显示单个节点磁盘使用情况的表格,包括已用空间、可用空间和使用百分比。
在Elastic Cloud上,跳过此部分。您可以为每个存储层选择一个硬件配置文件,Elastic会处理存储配置。

四个圆形仪表盘比较热、温、冷和冻存储层的价格和性能。
索引生命周期管理自动将数据移至存储层:热、温、冷、冻、删除。数据离热存储越远,存储成本越低。
冷和冻存储层使用可搜索快照:
在大规模情况下,成本差异非常显著。Search Labs基准测试测量了90 TB的数据:全热存储每月花费28,222。热+冻存储架构将这一成本降至每月3,290。
一个典型的ILM策略用于时间序列数据,热窗口为14天:
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仪表盘显示集群健康状况、事件热图以及热节点和冷节点的资源使用情况。
截至2026年2月,AutoOps对所有Elasticsearch用户免费,无论许可证级别如何。在Elastic Cloud上,它已经启用。对于Elastic自管理、Elastic Cloud Enterprise (ECE)和Elastic Cloud on Kubernetes (ECK)部署,轻量级Elastic Agent可以通过Cloud Connect在大约五分钟内连接您的集群。需要互联网连接;不支持隔离部署。
AutoOps每10秒采样数百个指标,并提供问题的根本原因分析和修复命令。它不会自动应用修复。

仪表盘显示监控集群中热节点和冷节点的事件热图和资源指标。
对于大型部署,它能检测:
它配备100多个可自定义的警报,并将通知路由到PagerDuty、Slack、Teams或任何Webhook。
关注分片大小(10–50 GB),跟踪ILM滚动时每个节点的分片预算,将热数据放在本地SSD上,并将不常查询的数据使用冷和冻存储层。
在Elastic Cloud上,硬件配置文件和AutoOps会为您处理大部分这些任务。对于自管理部署,这是您的检查清单,Cloud Connect上的AutoOps是您的早期预警系统。如果您不确定您的节点能处理多少数据以适应您的特定工作负载,请使用Rally在承诺硬件规格前对自己的数据进行基准测试。
😔不太有帮助
😐略有帮助
😁非常有帮助
报告问题
📡 更多 Elastic & AI 可观测性干货
关注「点火三周」,第一时间获取最新技术文章