本文介绍如何使用Python和Go连接阿里云ES。
准备工作
获取集群连接地址
VPC私网连接地址:通过VPC私网地址访问ES集群,延迟低,稳定性高。集群创建成功后,VPC私网地址默认开启。
公网连接地址:通过公网访问ES集群,需手动开启:
登录控制台,在集群配置与管理>安全配置页面,开启公网访问。开关打开后,待集群状态由生效中变更为生效时,表示开启成功。
重要公网地址会降低ES集群的安全性,如必须使用该地址,请设置IP白名单,使用结束后及时关闭。
设置IP白名单
为保障集群安全,您需要将待访问设备的IP地址加入VPC私网或者公网白名单,白名单配置完成后,立即生效,无需重启集群。
登录阿里云Elasticsearch控制台,在安全配置页面,单击修改设置VPC私网或者公网访问白名单。
获取待访问设备的IP并将其添加至白名单中。
Step 1:获取待访问设备IP
您可以参照以下场景,获取待访问设备的IP地址。
场景
需获取的IP地址
获取方式
在本地设备中通过命令行连接ES集群。
本地设备公网IP。
说明如果您的本地设备处在家庭网络或公司局域网中,需要添加局域网的公网出口IP地址。
通过
curl ipinfo.io/ip
查询本地设备公网IP。在ECS实例中通过命令行连接ES集群
ECS与ES在不同专有网络中,通过该ECS公网连接ES集群时,需获取ECS的公网IP。
登录ECS控制台,在实例列表查看实例的公网或者私网IP地址。
ECS与ES在同一专有网络中,通过该ECS私网连接ES集群时,需获取ECS的私网IP。
Step 2:添加白名单
单击default分组右侧的配置 ,在弹出的对话框中添加IP白名单。
如有需要,也可以单击新增IP白名单分组,自定义分组名称。
分组仅用于IP地址管理,不会影响实际访问权限。所有分组中的IP地址对ES集群的访问权限是一致的。
配置类别
格式和示例值
重要注意事项
IPv4地址格式
单个IP:
192.168.0.1
网段:
192.168.0.0/24
建议将零散的IP合并为IP段
单个集群最多可配置300个IP或者IP网段,多个IP或者IP网段之间用英文逗号隔开,且逗号前后不能有空格。
公网默认地址:
127.0.0.1
,表示禁止所有IPv4地址访问。VPC私网默认值:
10.0.0.0/8
0.0.0.0/0
:允许所有IPv4访问。重要强烈建议不要配置
0.0.0.0/0
,存在高危风险。部分集群版本(如7.16/8.5)和地域不支持
0.0.0.0/0
,请以控制台界面或者报错提示为准。
IPv6地址格式
(仅杭州地域支持)
单个IP:
2401:XXXX:1000:24::5
网段:
2401:XXXX:1000::/48
单个集群最多可配置300个IP或者IP网段,多个IP或者IP网段之间用英文逗号隔开,且逗号前后不能有空格。
::1
:禁止所有IPv6地址访问::/0
:允许所有IPv6访问重要强烈建议不要配置
::/0
,存在高危风险。部分集群版本不支持
::/0
,请以控制台界面或者报错提示为准。
配置完成后,单击确认。
注意事项
为避免出现版本兼容性问题,建议Python、Go的版本与阿里云ES集群的版本一致。
示例代码
Python
ES 8.x版本
# 安装指定版本的依赖
pip install elasticsearch==8.17.0
from elasticsearch import Elasticsearch
# 连接集群
es = Elasticsearch(
hosts=['http://<YourEsHost>:9200'],
basic_auth=('<UserName>', '<YourPassword>'),
)
# 获取并打印集群信息
res = es.info()
print(res)
ES 7.x版本
# 安装指定版本的依赖
pip install elasticsearch==7.10.0
# 代码示例
from elasticsearch import Elasticsearch
# 连接集群
es = Elasticsearch(
hosts=['http://<YourEsHost>:9200'],
basic_auth=('<UserName>', '<YourPassword>'),
)
res = es.info()
print(res)
ES 6.x版本
# 安装指定版本的依赖
pip install elasticsearch==6.8.2
from elasticsearch import Elasticsearch
# 连接集群
es = Elasticsearch(
hosts=['http://<YourEsHost>:9200'],
basic_auth=('<UserName>', '<YourPassword>'),
)
res = es.info()
print(res)
ES 5.x版本
# 安装指定版本的依赖
pip install elasticsearch==5.5.3
from elasticsearch import Elasticsearch
# 连接集群
es = Elasticsearch(
hosts=['http://<YourEsHost>:9200'],
basic_auth=('<UserName>', '<YourPassword>'),
)
res = es.info()
print(res)
Go
以下以ES 8.x版本为例介绍如何通过Go连接ES,更多Go API Client的使用特性,请参见Elasticsearch Go Client。
go get github.com/elastic/go-elasticsearch/v8
package main
import (
"github.com/elastic/go-elasticsearch/v8"
"log"
)
func main() {
cfg := elasticsearch.Config{
Addresses: []string{
"http://<YourEsHost>:9200",
},
Username: "<UserName>",
Password: "<YourPassword>",
}
es, err := elasticsearch.NewClient(cfg)
if err != nil {
log.Fatalf("Error creating the client: %s", err)
}
res, err := es.Info()
if err != nil {
log.Fatalf("Error getting response: %s", err)
}
defer res.Body.Close()
log.Println(res)
}
参数 | 说明 |
UserName | 用户名,固定为elastic |
YourPassword | 用户密码。 创建集群时设置密码,支持重置密码。 |
http | 访问协议,默认使用http协议。 为保障集群安全性,建议使用https协议,需手动开启https协议后才能使用。 通过https连接集群Python代码示例:
|
YourEsHost | 集群访问地址,支持:
登录ES控制台,通过集群基本信息页查看地址。 |
9200 | 端口号为9200,通过集群基本信息页查看端口号。 |