在 Elasticsearch (ES) 中存储海量数据时,路由(Routing)策略的设计直接决定了查询性能、写入吞吐量以及集群的稳定性。 默认情况下,ES 使用文档 进行哈希路由,这能保证数据均匀分布,但会导致查询时的“广播模式”(Scatter-Gather),即查询需要扫描所有分片。对于海量数据,这通常是不可接受的。 以下是针对海量数据场景的路由设计策略指南,分为核心原则、常见策略、以及应对数据倾斜的方案。 --- 一、 核心原理 ES 确定文档所在分片的公式为: $$shard = hash(routing) \% number\of\primary\shards$$ 默认情况: = 。 自定义路由: = / / 等业务字段。 --- 二、 路由策略设计方案 1. 默认路由(不推荐用于海量数据的精确查询) 机制:使用自动生成的 或业务主键作为路由。 优点:数据在分片间分布非常均匀,写入性能好,无热点分片问题。 缺点:查询性能差。每次查询都需要访问所有分片,然后聚合结果。随着数据量和分片数增加,Coordinator 节点的压力剧增,延迟变高。 适用场景:数据量中等,或者...