--- title: "脚本最大大小配置" date: 2026-01-20 lastmod: 2026-01-20 description: "控制脚本源代码最大大小的配置说明" tags: ["脚本", "大小限制", "安全配置"] summary: "配置项作用 # 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 (64KB) ``` ## 配置项类型 **动态配置** - 可以在运行时修改 ## 配置格式 ```yaml # 默认配置 script.max_size_in_bytes: 65535 # 增加限制 script.max_size_in_bytes: 131070 # 128KB # 减少限制 script.max_size_in_bytes: 32768 # 32KB ``` ## 有效范围 - **最小值**:不能低于现有存储脚本的大小 - **最大值**:受系统内存限制 ## 工作原理 ``` ┌─────────────────────────────────────────────────────────┐ │ 脚本大小验证 │ └─────────────────────────────────────────────────────────┘ 脚本请求 │ ▼ 计算脚本大小 │ ├── 内联脚本 → 测量源代码长度 └── 存储脚本 → 测量存储内容长度 │ ▼ 比较限制 │ ├── 超过限制 → 拒绝请求 └── 未超过 → 允许执行 ``` ## 推荐设置 | 场景 | 推荐值 | 说明 | |------|--------|------| | 默认配置 | 65535 | 适用于大多数场景 | | 大脚本 | 131070 | 支持更复杂的脚本 | | 安全优先 | 32768 | 更严格的限制 | | 资源受限 | 16384 | 减少内存使用 | ## 使用示例 **默认配置:** ```yaml script.max_size_in_bytes: 65535 ``` **支持大脚本:** ```yaml script.max_size_in_bytes: 131070 # 128KB ``` **安全限制:** ```yaml script.max_size_in_bytes: 32768 # 32KB ``` ## 配置验证 ```bash # 查看当前配置 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 ``` **解决方案:** ```yaml # 增加限制 script.max_size_in_bytes: 131070 ``` **问题 2:无法降低限制** **原因:** - 存在更大的存储脚本 **解决方案:** ```yaml # 先删除大脚本或保持较高限制 ``` ## 注意事项 1. **动态配置**:可以在运行时修改 2. **存储脚本**:不能低于现有存储脚本的大小 3. **内存考虑**:较大的值会增加内存使用 4. **DoS 保护**:此配置防止大脚本攻击 5. **合理设置**:根据实际需求设置 ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `script.allowed_types` | [] | 允许的脚本类型 | | `script.cache.max_size` | 100 | 脚本缓存大小 | ## 完整配置示例 ```yaml # easysearch.yml # 默认配置 script.max_size_in_bytes: 65535 # 安全配置 script.max_size_in_bytes: 32768 script.allowed_types: - stored ```