比如我建一个autoFollow,匹配的是aaa-*,
leader那边建一个索引aaa-1,follower这边就会自动建这个索引。
我的问题是:
follower这边是怎么知道那边建个索引的呢?
靠这边的定时任务,一分种检查一次?好像不是,那边建了,这边好像马上可以知道。
在leader那边建一个任务,有新索引就通知这边?好像也不像,因为CCR对leader那边没有影响啊。
有人研究过这块吗?希望可以帮忙看下。
leader那边建一个索引aaa-1,follower这边就会自动建这个索引。
我的问题是:
follower这边是怎么知道那边建个索引的呢?
靠这边的定时任务,一分种检查一次?好像不是,那边建了,这边好像马上可以知道。
在leader那边建一个任务,有新索引就通知这边?好像也不像,因为CCR对leader那边没有影响啊。
有人研究过这块吗?希望可以帮忙看下。
2 个回复
JiangJibo - 喊我雷锋
赞同来自:
stone_xy
赞同来自:
ES中索引信息存在在ClusterState中,而要获取一个集群的ClusterState可以通过
其中的request为ClusterStateRequest,ClusterStateRequest中有一个参数waitForMetaDataVersion,也就是说等待某个版本的meta data,在CCR中就是使用的这个来获取新版本的metadata。
详见代码:
至于服务端如何处理ClusterStateRequest的waitForMetaDataVersion可以看一下 TransportClusterStateAction这个类。