Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Why we stopped using one Elasticsearch index per tenant and built our own

说明与用途

SeaSearch 用共享 S3 存储和 etcd 路由取代每租户 Elasticsearch 索引,消除集群状态膨胀,实现无限租户。

问题

Managing thousands of tenant‑specific Elasticsearch indexes caused cluster state bloat, slow master node performance, and limited scalability.

结果

SeaSearch removes the need for one index per tenant, reducing cluster state size, improving master node performance, and enabling unlimited tenants while maintaining Elasticsearch compatibility.

工作流

  • 1. Deploy SeaSearch compute nodes that read/write to a shared S3 bucket.
  • 2. Store index metadata and partition ownership map in etcd.
  • 3. Cluster manager monitors node health and updates partition‑to‑node mapping in etcd.
  • 4. Proxy receives client requests, looks up owner node from etcd, and forwards the request.
  • 5. Compute nodes cache immutable segments locally; on cache miss, fetch segments from S3 concurrently (parallel warm‑up).
  • 6. For large indexes, split queries across multiple compute nodes and aggregate results.
  • 7. Use unified_search endpoint to score across multiple indexes consistently.

证据

Every index costs at least one shard, and each shard is basically its own mini Lucene database... A few thousand indexes and mapping updates get sluggish.

来源

Compute nodes hold no authoritative data, so failover is a map update rather than a data migration.

来源

Parallel warm‑up. Modern datacenter bandwidth is enormous and a single‑threaded fetch wastes it.

来源

SeaSearch can split a single query across multiple compute nodes.

来源

  • 记录日期: 2026-09-21T13:00:26.446Z