配置项作用 #
thread_pool.search_throttled.size 配置项用于控制限流搜索线程池的线程数量。
当索引被标记为 index.search.throttled=true 时,该索引的搜索请求会被路由到此线程池处理。
配置项属性 #
- 配置路径:
thread_pool.search_throttled.size - 数据类型:
Integer(整数) - 默认值:
1 - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(可以动态更新,无需重启)
配置项详解 #
工作机制 #
限流搜索机制
索引设置 search.throttled=true:
│
├── 搜索请求到达
├── 路由到 search_throttled 线程池
├── 单线程处理 (size=1)
│ ├── 同时只处理 1 个请求
│ ├── 其他请求在队列等待
│ └── 防止资源过度消耗
└── 保护系统资源
使用场景:
├── 后台索引
├── 历史数据索引
├── 低优先级搜索
├── 批量查询
└-- 资源保护
与普通 search 线程池的区别 #
两个搜索线程池对比:
search (普通搜索):
├── 线程数: (CPU × 3) / 2 + 1
├── 队列: 1000
├── 用途: 正常搜索请求
├-- 优先级: 高
search_throttled (限流搜索):
├── 线程数: 1 (默认)
├── 队列: 100
├── 用途: 限流索引搜索
├-- 优先级: 低
资源保护:
├── 限流搜索不会抢占资源
├── 保证正常搜索性能
├── 防止后台任务影响
└-- 系统稳定性 ✅
配置建议 #
默认配置(推荐) #
thread_pool:
search_throttled:
size: 1 # 默认值
建议: 使用默认值,确保限流效果。
增加限流容量 #
thread_pool:
search_throttled:
size: 2
建议: 需要处理更多限流搜索时使用。
动态更新 #
PUT /_cluster/settings
{
"transient": {
"thread_pool.search_throttled.size": 2
}
}
代码示例 #
设置索引限流 #
PUT /my_index/_settings
{
"index.search.throttled": true
}
搜索限流索引 #
GET /my_index/_search
{
"query": { "match_all": {} }
}
查看线程池状态 #
GET /_cat/thread_pool/search_throttled?v
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
search_throttled.size | 线程池大小 | 1 |
search_throttled.queue_size | 队列大小 | 100 |
注意事项 #
默认值: 默认值为
1,推荐保持。动态更新: 支持动态更新。
索引设置: 需要设置
index.search.throttled=true才生效。资源保护: 主要目的是保护系统资源。
队列较小: 队列只有 100,比普通搜索小。
适用场景: 后台任务、历史数据搜索。





