You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure VM上Elasticsearch 8.6.1的Python连接报错求助

解决Azure虚拟机上Elasticsearch 8.6.1的Python连接问题

核心问题定位

报错WinError 10061是因为你的Python代码试图连接本地localhost:9200,但Elasticsearch实际运行在Azure虚拟机上,本地localhost无法指向远端VM,导致连接被主动拒绝。

具体修复步骤

1. 修正连接地址为Azure虚拟机的公网IP/域名

把代码中的https://localhost:9200替换成Azure VM的公网IP或自定义域名,示例:

es = Elasticsearch('https://<你的VM公网IP>:9200',
                   ca_certs=CA_CERT,
                   basic_auth=(USER_ID, ELASTIC_PASSWORD))

2. 在Azure网络安全组(NSG)中开放9200端口

你当前仅开放了5601端口(Kibana),但Elasticsearch默认HTTPS端口为9200,需在Azure门户给VM对应的NSG添加入站规则:

  • 端口范围:9200
  • 协议:TCP
  • 源:开发环境可暂时设为Any,生产环境建议限制为特定IP段

3. 验证Elasticsearch端口配置

检查elasticsearch.yml中http.port是否为默认的9200(若被修改需同步到代码):

http.port: 9200

4. 测试网络连通性

在本地用PowerShell测试VM的9200端口是否可达:

Invoke-WebRequest -Uri https://<你的VM公网IP>:9200 -CertificateFile .\http_ca.crt

若返回Elasticsearch集群信息,说明网络与证书配置正常,再回到Python代码调试。

5. 确认Elasticsearch网卡绑定状态

在Azure虚拟机上执行以下命令,确认Elasticsearch监听所有网卡:

netstat -tulpn | grep 9200

输出显示0.0.0.0:9200或:::9200即表示绑定正常。

额外注意事项

  • 保持xpack.security.enabled: true是合规做法,无需关闭安全验证
  • 若使用自定义域名,需确保域名解析正确,且CA证书的SAN字段包含该域名(避免SSL验证失败)

内容的提问来源于stack exchange,提问作者Greg Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:54:22