为了安全性,阿里云Elasticsearch实例间的网络默认是隔离的,因此使用跨集群搜索功能时,需要先打通两个实例的网络。本文介绍如何配置实例网络互通和使用跨集群搜索功能。
注意事项
因阿里云Elasticsearch网络架构调整,2020年10月起创建的实例暂时不支持Watcher、LDAP认证、跨集群Reindex、跨集群搜索、实例网络互通功能,待后期功能上线后开放,请耐心等待。
前提条件
待互通的两个阿里云Elasticsearch实例满足以下条件:
- 相同版本。
- 归属于相同账号。
- 部署在同一个专有网络中。
- 同为单可用区实例,或同为多可用区实例。
配置实例间网络互通
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 在顶部菜单栏处,选择资源组和地域,然后在实例列表中单击目标实例ID。
- 在左侧导航栏,单击安全配置。
- 单击配置实例网络互通右侧的修改。
- 在修改配置页面,单击+添加实例。
- 在添加实例对话框中,选择待互通的远程实例(可选择多个)。

注意
- 子账号需要ListInstance权限才能获取相应主账号下的所有实例。详细信息,请参见授权资源类型。
- 配置实例间网络互通后,在远程实例的配置实例网络互通页面,也可以看到当前实例。即网络打通操作是双向的。如果A实例配置了与B实例的网络互通,则B实例的网络也与A实例进行了打通。
- 单击确认。
添加成功后,可在
修改配置页面查看与当前实例打通的实例列表。

说明 添加互通实例后,如果不再使用,可单击移除,移除该互通实例。
在实际业务中,配置完实例网络互通后,您需要继续配置跨集群搜索,才能在当前实例中搜索远程实例的数据。
配置跨集群搜索
- 登录远程Elasticsearch实例的Kibana控制台。
- 执行以下命令,在远程实例中创建索引和文档,并插入数据。
- 创建索引
PUT /twitter
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}
- 创建文档并插入数据
POST twitter/_doc/
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
- 登录当前Elasticsearch实例的Kibana控制台。
- 执行以下命令,在当前实例中配置跨集群搜索。
以下为Elasticsearch 6.7.0版本的配置方法,其他版本与此类似。详细信息,请参见
Elasticsearch 7.x版本跨集群搜索、
Elasticsearch 6.3版本跨集群搜索和
Elasticsearch 5.5版本跨集群搜索。
- 方法1:使用内网Endpoint配置
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"cluster_one": {
"seeds": [
"es-cn-o4xxxxxxxxxxxx4f1.elasticsearch.aliyuncs.com:9300"
]
}
}
}
}
}
- 方法2:使用节点IP地址配置
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"cluster_one": {
"seeds": [
"10.8.xx.xx:9300",
"10.8.xx.xx:9300",
"10.8.xx.xx:9300"
]
}
}
}
}
}
注意
- 对于单可用区的Elasticsearch实例,可以使用方法1和方法2配置;对于多可用区的Elasticsearch实例,只能使用方法2配置。两者都支持配置多个远程Elasticsearch实例。
- 如果在当前Elasticsearch实例中,配置了远程Elasticsearch实例的域名或节点IP地址(跨集群搜索),则只可在当前实例中查询远程实例的索引数据,无法在远程实例中执行类似命令反向访问。如果需要反向访问,需要在远程实例中配置当前实例的域名或节点IP地址。
- 执行以下命令,验证跨集群搜索是否配置成功。
POST /cluster_one:twitter/doc/_search
{
"query": {
"match_all": {}
}
}
验证成功后,返回如下结果。
{
"took" : 78,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"_clusters" : {
"total" : 1,
"successful" : 1,
"skipped" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [
{
"_index" : "cluster_one:twitter",
"_type" : "doc",
"_id" : "qudxxxxxxxxxx_7ie6J",
"_score" : 1.0,
"_source" : {
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
}
]
}
}