使用routing key进行读写时Elasticsearch索引生命周期的工作机制
Elasticsearch ILM与Routing Key相关疑问解答
1. 热到温迁移时是否会重新索引到不同分片?
默认情况下不会。ILM将数据从热节点迁移到温节点,本质是分片节点迁移(shard relocation)——整个分片(包括所有文档、元数据、路由规则)原封不动地从热节点移动到温节点,分片数量、路由哈希规则完全不变。
只有当你在ILM策略中配置了shrink(缩减分片数)、rollover后重新索引这类特殊操作时,才会生成新索引并重新分配分片,但这属于自定义策略的特殊场景,不是热到温迁移的默认行为。
2. 若发生重新索引到不同分片,Routing Key如何辅助搜索?
如果是因为ILM策略中的shrink或重新索引操作导致分片变化:
- 只要在重新索引时为文档指定相同的routing key,新索引会沿用原有的路由哈希规则(除非你修改了索引的
number_of_shards或路由配置),文档依然会被路由到对应分片; - 搜索时使用相同的routing key,ES会根据新索引的分片配置重新计算目标分片,依然能直接定位到存储该文档的分片,不会影响routing key的定向搜索能力;
- 若重新索引时未指定routing key,文档会按默认规则分配分片,此时原routing key就无法再准确定位,但这种情况在ILM的常规流程中很少出现。
3. 不重新索引时,如何在相同分片上实现只读管理?
当索引进入温阶段,ILM会通过修改索引的元数据设置实现只读:
- 自动设置
index.blocks.write: true,禁止所有写入操作(包括新增、更新、删除); - 同时保留索引的可读权限,分片的结构、路由规则、文档位置完全不变,搜索时使用原routing key依然能直接定位到目标分片,和热阶段的搜索逻辑没有区别。
内容的提问来源于stack exchange,提问作者Ashutosh Tiwari
相关产品推荐
相关产品推荐

