跨集群搜索
跨集群搜索是通过本地集群向一个或多个远程集群发起搜索请求,可实现对存储在不同数据中心集群的日志数据进行筛选和分析。
跨集群搜索工作原理是在本地集群中配置一个或多个远程集群,并且仅连接到远程集群中有限数量的节点。每个远程集群都由一个名称和一个 seed nodes
(种子节点)的列表引用。 这些 seed nodes
(种子节点)用于发现远程集群中作为 gateway nodes
(网关节点)的节点。本地集群中配置远程集群的每个节点都连接到一个或多个 gateway nodes
(网关节点),并使用它们将搜索请求发送到远程集群。
更多跨集群搜索使用方法和说明,请参见 Search across clusters。
本小节主要介绍在多个集群间如何跨集群搜索。
前提条件
- 已获取管理控制台登录账号和密码,且已获取集群操作权限。
- 已创建 OpenSearch 集群,且集群状态为
活跃
。 - 已获取 Dashboard 登录帐号和密码。
- 请确保本地集群与远端集群间网络通畅。若需通过外网访问 Dashboard,请先通过设置边界路由器或 VPN 等方式打通网络。
步骤1:创建并添加远端集群
-
登录管理控制台,创建2个远端集群,并获取远端集群 OpenSearch 热节点 IP。
- 本地集群:opensearch-local
- 远端集群1:opensearch-r1 172.22.2.47
- 远端集群2:opensearch-r2 172.22.2.51
-
登录 Dashboard 可视化管理平台,执行如下语句,在本地集群上添加远端集群。
注意
-
9300 为 OpenSearch 节点之间的传输端口。
-
一个 seeds 字段下可设置一个或多个节点,设置多个节点可确保搜索的高可用。
PUT _cluster/settings { "persistent": { "search": { "remote": { "cluster_one": { "seeds": [ "172.22.2.47:9300" ] }, "cluster_two": { "seeds": [ "172.22.2.51:9300" ] } } } } }
-
步骤2:向远端集群存入文档
执行如下命令,分别在 cluster_one、cluster_two 创建索引并存入文档。
curl -u 'admin:Change1Pwd' -XPUT "http://172.22.2.47:9200/mydata/_doc/0" -H 'Content-Type: application/json' -d'{ "msg": "你好,世界!"}'
curl -u 'admin:Change1Pwd' -XPUT "http://172.22.2.51:9200/mydata/_doc/1" -H 'Content-Type: application/json' -d'{ "msg": "Hello, world!"}'
步骤3:查询远端索引
登录本地集群的 Dashboard 管理平台,执行以下语句查询远端索引。
GET /cluster_one:mydata/_search
GET /cluster_two:mydata/_search
GET /cluster_one:mydata,cluster_two:mydata/_search
示例回显结果如下:
"max_score" : 1.0,
"hit" : [
{
"_index" :"cluster_one:mydata",
"_type" : "_doc",
"_id" : "0",
"_score" : 1.0,
"_source" :{
"msg" : "你好,世界!"
}
},
{
"_index" :"cluster_two:mydata",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" :{
"msg" : "Hello, world!"
}
},
]