配置项作用 #
http.compression 配置项控制是否对 HTTP 响应进行压缩,以减少网络带宽使用并提高传输速度。
是否可选 #
是
默认值 #
true (启用压缩)
配置项类型 #
静态配置 - 需要重启节点才能生效
配置格式 #
# 默认启用(无需配置)
http.compression: true
# 禁用压缩
http.compression: false
工作原理 #
当启用压缩时,HTTP 服务器使用 Netty 的 HttpContentCompressor 压缩响应:
┌─────────────────────────────────────────────────────────┐
│ HTTP 响应处理 │
└─────────────────────────────────────────────────────────┘
│
▼
┌───────┴────────┐
│ 生成响应 │
│ │
▼ │
┌───────┴────────┐ │
│ │ │
compression=true compression=false
│ │
▼ ▼
压缩响应 直接发送
使用 gzip
│
▼
检查客户端
Accept-Encoding
│
├── 支持 gzip → 发送压缩数据
└── 不支持 → 发送原始数据
推荐设置 #
| 场景 | 推荐值 | 说明 |
|---|---|---|
| 默认配置 | true | 平衡带宽和 CPU |
| 带宽受限 | true | 节省带宽 60-80% |
| CPU 受限 | false | 避免压缩开销 |
| 开发调试 | false | 便于查看原始响应 |
| 生产环境 | true | 减少网络传输 |
何时启用/禁用 #
启用压缩的情况:
- 网络带宽有限
- 响应体积较大
- 需要加快传输速度
- 跨地域访问
禁用压缩的情况:
- CPU 资源紧张
- 网络带宽充足
- 响应体很小
- 需要调试响应内容
性能影响 #
优点:
- 节省网络带宽 60-80%
- 大响应传输更快
- 改善用户体验
缺点:
- 增加 CPU 使用率
- 小响应可能因压缩而变慢
- 增加响应延迟
相关配置 #
http.compression_level - 压缩级别(1-9)
http.compression: true
http.compression_level: 3 # 默认值,平衡速度和压缩率
# 更高压缩率
http.compression_level: 6
# 最快速度
http.compression_level: 1
压缩级别对比:
| 级别 | 压缩率 | CPU 使用 | 速度 | 适用场景 |
|---|---|---|---|---|
| 1 | 最低 | 最低 | 最快 | CPU 敏感 |
| 3 | 中等 | 中等 | 中等 | 默认推荐 |
| 6 | 较高 | 较高 | 较慢 | 带宽敏感 |
| 9 | 最高 | 最高 | 最慢 | 极限压缩 |
配置验证 #
# 查看当前配置
GET /_nodes/settings?filter_path=nodes.*.http.compression*
# 测试压缩
curl -H "Accept-Encoding: gzip" -I http://localhost:9200/
# 查看响应头
curl -H "Accept-Encoding: gzip" -v http://localhost:9200/ 2>&1 | grep -i "content-encoding"
客户端兼容性 #
Easysearch 会检查客户端的 Accept-Encoding 请求头:
# 支持 gzip 的请求
curl -H "Accept-Encoding: gzip" http://localhost:9200/
# 不支持 gzip 的请求
curl -H "Accept-Encoding: identity" http://localhost:9200/
使用示例 #
默认配置(推荐):
http.compression: true
http.compression_level: 3
禁用压缩:
http.compression: false
最大压缩:
http.compression: true
http.compression_level: 9
注意事项 #
- 静态配置:修改压缩设置需要重启节点
- CPU 开销:压缩会增加 CPU 使用率
- 自动处理:客户端支持 gzip 时自动压缩
- 小响应:小响应可能因压缩开销而变慢
- 推荐级别:级别 3 在速度和压缩率之间取得最佳平衡
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
http.compression_level | 3 | 压缩级别(1-9) |
transport.compress | false | 传输层压缩 |
监控指标 #
启用压缩后应监控:
- CPU 使用率
- 网络带宽使用
- 平均响应时间
- 压缩率
# 查看节点统计
GET /_nodes/stats/http?filter_path=nodes.*.http.*





