📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

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

注意事项 #

  1. 静态配置:修改压缩设置需要重启节点
  2. CPU 开销:压缩会增加 CPU 使用率
  3. 自动处理:客户端支持 gzip 时自动压缩
  4. 小响应:小响应可能因压缩开销而变慢
  5. 推荐级别:级别 3 在速度和压缩率之间取得最佳平衡

相关配置项 #

配置项默认值说明
http.compression_level3压缩级别(1-9)
transport.compressfalse传输层压缩

监控指标 #

启用压缩后应监控:

  • CPU 使用率
  • 网络带宽使用
  • 平均响应时间
  • 压缩率
# 查看节点统计
GET /_nodes/stats/http?filter_path=nodes.*.http.*