一句话:
IndexService 就是“一个索引在单个节点里的运行时总管”,负责把这个索引在本节点托管的所有分片(主/副)以及它们要用到的资源、配置、线程池、缓存、监听等全部管理起来。
---
✅ IndexService 的核心职责(节点维度)
模块 作用
分片生命周期 创建 / 删除 / 关闭本地 IndexShard 实例(每个分片一个)。
线程池 提供 `index`, `search`, `refresh`, `flush`, `merge` 等线程池的引用,让分片任务有地方跑。
缓存 管理节点级别的 query cache、field data cache、request cache 等共享缓存。
MapperService 保存并更新这个索引的映射(mapping);所有分片共用同一份。
IndexSettings 保存索引级别的动态/静态配置(分片数、副本数、refresh_interval…)。
EventListener 监听集群状态变化,处理分片分配、恢复、删除等事件。
Recovery 协调本节点与其他节点之间的分片恢复(peer recovery)。
---
✅ 与 IndexShard 的关系
- IndexShard = 一个分片的运行时实例
- IndexService = 该索引在当前节点上所有分片的“大管家”
每个节点会为它托管的每一个索引创建一个 IndexService;
一个 IndexService 里又包含 0…N 个 IndexShard。
---
✅ 一句话总结
> IndexService 是“索引在当前节点上的总控制台”,负责管理该索引在本节点内的所有分片、配置、线程池和缓存等资源。