不要急,总有办法的

创建索引时副本(replicas)延迟复制的问题

Elasticsearch | 作者 verra1448 | 发布于2016年07月14日 | 阅读数:3647

在很多博客文章里都有这样的建议:
在创建索引时先把number_of_replicas设为0,等数据写完之后在动态恢复原来的设置。

对此我有两个问题:
1.    如何等待副本复制完成后再开放检索?
恢复副本数量配置在Java中的具体实现如下:
indicesAdminClient.prepareUpdateSettings(indexName).setSettings(Settings.builder().put("number_of_replicas", 2)).get();
测试后发现,这个调用是立即返回的,不会等待副本复制完成。因为目前创建全量索引后利用了索引别名进行无缝切换,如果副本复制完成前切换别名,担心主分片上的查询压力会比较大,请求很可能要排队等待处理
所以,有什么方式可以同步等待副本复制完成?或者我的担心是否多余?

2.    先创建主分片再复制,具体省去了哪些工作,是副本数据的重复分析吗?还有别的吗?
对比两种方式后发现,这种做法确实会节省不少时间。
已邀请:

medcl - 今晚打老虎。

赞同来自: verra1448

1.通过获取索引的状态,green表示副本已全部分配完成,其实不用等待副本完成就可以提供查询的
2.先建再产生副本会直接拷贝segment文件,对比文档的直接索引要快的,后续的进来的数据都是各自在副本上进行索引

要回复问题请先登录注册