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

配置项作用 #

script.max_size_in_bytes 配置项限制脚本源代码的最大大小(字节),包括内联脚本和存储脚本。

是否可选 #

默认值 #

65535 (64KB)

配置项类型 #

动态配置 - 可以在运行时修改

配置格式 #

# 默认配置
script.max_size_in_bytes: 65535

# 增加限制
script.max_size_in_bytes: 131070  # 128KB

# 减少限制
script.max_size_in_bytes: 32768   # 32KB

有效范围 #

  • 最小值:不能低于现有存储脚本的大小
  • 最大值:受系统内存限制

工作原理 #

┌─────────────────────────────────────────────────────────┐
│                   脚本大小验证                            │
└─────────────────────────────────────────────────────────┘

脚本请求
    │
    ▼
计算脚本大小
    │
    ├── 内联脚本 → 测量源代码长度
    └── 存储脚本 → 测量存储内容长度
    │
    ▼
比较限制
    │
    ├── 超过限制 → 拒绝请求
    └── 未超过 → 允许执行

推荐设置 #

场景推荐值说明
默认配置65535适用于大多数场景
大脚本131070支持更复杂的脚本
安全优先32768更严格的限制
资源受限16384减少内存使用

使用示例 #

默认配置:

script.max_size_in_bytes: 65535

支持大脚本:

script.max_size_in_bytes: 131070  # 128KB

安全限制:

script.max_size_in_bytes: 32768   # 32KB

配置验证 #

# 查看当前配置
GET /_cluster/settings?filter_path=*.script.max_size_in_bytes

# 测试大脚本
POST _scripts/test_script
{
  "script": {
    "source": "long script here..."
  }
}

常见问题 #

问题 1:脚本过大被拒绝

错误信息:

illegal_argument_exception: script size exceeds max allowed size

解决方案:

# 增加限制
script.max_size_in_bytes: 131070

问题 2:无法降低限制

原因:

  • 存在更大的存储脚本

解决方案:

# 先删除大脚本或保持较高限制

注意事项 #

  1. 动态配置:可以在运行时修改
  2. 存储脚本:不能低于现有存储脚本的大小
  3. 内存考虑:较大的值会增加内存使用
  4. DoS 保护:此配置防止大脚本攻击
  5. 合理设置:根据实际需求设置

相关配置项 #

配置项默认值说明
script.allowed_types[]允许的脚本类型
script.cache.max_size100脚本缓存大小

完整配置示例 #

# easysearch.yml

# 默认配置
script.max_size_in_bytes: 65535

# 安全配置
script.max_size_in_bytes: 32768
script.allowed_types:
  - stored