跨集群搜索(cross-cluster search)使你可以针对一个或多个远程集群运行单个搜索请求。 例如,你可以使用跨集群搜索来筛选和分析存储在不同数据中心的集群中的日志数据。
示例 :在一个集群里访问多个云厂商所提供的集群,并对跨数据的数据进行搜索,如下图:
如上面所述,当 client 向集群 cluster_1 发送请求时,它可以搜索自己本身的集群,同时也可以向另外的两个集群 cluster_2 及 cluster_3 发送请求。最后的结果由 cluster_1 返回给客户端。
CCS方案:
![]()
-
每个采集渠道采集的数据可以位于不同的 Elasticsearch 中。从上面的结构中,它比较简单,直接。我们可以通过 CCS 的运用,可以同时针对几个集群进行搜索,并在搜索集群中得到最终的结果。
目前支持的 APIs:
跨集群搜索例子
1、注册 remote cluster: 要执行跨集群搜索,必须至少配置一个远程集群。在群集设置中配置了远程群集
- 使用 cluster.remote 属性
- 种子(seeds)是远程集群中的节点列表,用于在注册远程集群时检索集群状态
以下 cluster update settings API请求添加了三个远程集群:cluster_one,cluster_two 和 cluster_three
1 PUT _cluster/settings
2 {
3 "persistent": {
4 "cluster": {
5 "remote": {
6 "cluster_one": {
7 "seeds": [
8 "127.0.0.1:9300"
9 ]
10 },
11 "cluster_two": {
12 "seeds": [
13 "127.0.0.1:9301"
14 ]
15 },
16 "cluster_three": {
17 "seeds": [
18 "127.0.0.1:9302"
19 ]
20 }
21 }
22 }
23 }
24 }
动手实践
1、安装两个集群:cluster 1及cluster 2。它们位于同一个网络内,可以互相访问;安装好集群的 Elasticsearch 及 Kibana
2、搜索配置: 在 kibana_2,也既是端口地址为 5602 的 Kibana。打入如下的命令:
1 PUT _cluster/settings
2 {
3 "persistent": {
4 "cluster.remote": {
5 "remote_cluster": {
6 "seeds": [
7 "127.0.0.1:9300"
8 ]
9 }
10 }
11 }
在 cluster_2 里配置可以连接到 cluster_1 的这样设置。因为 cluster_1 的 transport 口地址是 9300
- 命令来检查我们的连接状态:GET _remote/info
在 Kibana_1 中创建 twitter 索引并插入数据;在 cluster_2 上如何对这个进行搜索呢?
在 Kibana_2 里,打入如下的命令:GET remote_cluster:twitter/_search
如果你配置了多个 remote 索引,可以使用如下的方法来进行搜索: GET *:twitter/_search
使用 *:twitter 来表示所有 remote cluster里含有 twitter 的集群
Flag:
- 关注跨云厂商多集群访问 (用华为云与Azure日志进行验证)
参考资料:






浙公网安备 33010602011771号