首先需要保证多个集群的es版本要兼容
假设两个集群的名称为:cluster_1、cluster_2,需要实现在cluster_1上查询cluser_2的目标。
1、配置项
分为动态配置与静态配置,静态配置指在 cluster_1 的配置文件elasticsearch.yml 里加入 cluster_2 实例的信息;
动态配置指使用 http 接口的方式:
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"cluster_1": {
"seeds": [
"127.0.0.1:9300"
],
"transport.ping_schedule": "30s"
},
"cluster_2": {
"seeds": [
"xxx.xx.xx.xxx:9300"
],
"transport.compress": true,
"skip_unavailable": true
}
}
}
}
}
配置完在 cluster_1 访问:GET _remote/info 可以看到 cluser_2 的信息:
image.png
注:es集群之间的交互使用tcp协议,所以需要配9300端口,不能用9200,两者的区别如下:
ES节点和外部通讯使用9200;
ES节点之间通讯使用9300;
2、使用跨集群查询
在cluser_1请求:GET cluster_2:bss_index/_search,
image.png
可以正常访问。