悟空,拿我的打狗棒来

ES索引打开时,分片分配的疑问

Elasticsearch | 作者 wangxinrong | 发布于2020年10月19日 | 阅读数:1589

目前从我观察和测试的情况来看,感觉分片分配是这样的:
1.先分配主分片,主分片的分配很快,在已有分片数据的节点上打开分片就可以。
2.再同步副本分片,这个过程很慢。不管索引在关闭前是不是已经开启并同步好了副本,它都会像无副本的索引开启副本一样,重新同步一次,并不会直接从已有副本分片的机器上直接打开。
 
两个操作似乎能证明这点:
1.直接打开一个索引时,主分配分片很快,副本分片分配很慢,要等很久。
2.当一个索引的分片分配在A、B节点时,关闭它,设置index.routing.allocation.include._name为C、D,再打开索引。首先是主分片先分配到A、B,然后是副本同步到C、D,然后主分片再迁移到C、D。
 
这样的话会导致打开旧索引查历史数据时很占资源。目前我的做法是配置集群allocation为primaries,打开索引时不分配副本。但这样比较麻烦,新建索引时新索引的副本会不分配。
有没有办法让已有副本的索引,在打开时,也直接从已有副本数据的节点上,直接快速地把副本打开呢?
已邀请:

要回复问题请先登录注册