为什么我们放弃每租户一个 Elasticsearch 索引,自己造了一个
来源:dev.to — 2026-09-17
📋 概述
每租户一个 Elasticsearch 索引在隔离上很干净,但每个索引至少一个分片,映射与路由又都压在集群状态里,几千个索引就让映射更新变慢,上万个就成为凌晨被叫醒的原因。SeaCloud 因此开源了 SeaSearch:基于 ZincSearch 与 Bluge 的搜索引擎,把索引数据放 S3,用路由转移所有权而不是复制数据,让租户数量不再受集群状态上限约束。
🔑 核心要点
- 分片本身就是一个个迷你 Lucene 数据库,各自带文件、后台维护与内存开销。
- 集群状态由 master 维护并复制到每个节点,索引一多,master 就是半夜告警的源头。
- 不重写搜索引擎:分析器、打分、段合并、查询规划是几十年的积累,改用 Go 写的 ZincSearch 承接。
- 计算节点不持权威数据,故障转移变成一次映射更新而不是数据迁移。
- 索引哈希到固定分区,集群管理器把分区-节点映射写进 etcd,网关照表转发。
💡 金句
计算节点不持有权威数据,所以故障转移只是一次映射更新,而不是一次数据迁移。
👍 0
👎 0
← 返回 dev.to 首页