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

配置项作用 #

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. 默认值: 默认值为 1,推荐保持。

  2. 动态更新: 支持动态更新。

  3. 索引设置: 需要设置 index.search.throttled=true 才生效。

  4. 资源保护: 主要目的是保护系统资源。

  5. 队列较小: 队列只有 100,比普通搜索小。

  6. 适用场景: 后台任务、历史数据搜索。