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

Docker部署OpenSearch 1.0.0 Python客户端无SSL连接报错修复

问题根因

OpenSearch v1.0.0 官方Docker镜像默认在9200端口启用HTTPS协议,你的Python客户端代码配置了use_ssl = False,会使用明文HTTP发起请求。服务端收到不符合TLS握手规则的明文请求时会直接断开连接,触发Remote end closed connection without response报错。
你测试用的curl命令明确指定了https://协议前缀,因此可以正常返回结果,说明故障本质是客户端通信协议和服务端配置不匹配,和服务未启动、端口未监听导致的连接拒绝问题完全无关。

修复方案

二选一即可,根据自身使用场景选择:

  • 方案1:保留服务端默认HTTPS配置(和现有curl测试逻辑一致,无需重建容器)
    修改客户端初始化参数,将use_ssl取值改为True,其余跳过证书校验的配置保持不变即可,修改后的客户端初始化代码如下:

    client = OpenSearch(
        hosts = [{'host': host, 'port': port}],
        http_compress = True,
        http_auth = auth,
        use_ssl = True, # 开启SSL,匹配服务端HTTPS协议
        verify_certs = False,
        ssl_assert_hostname = False,
        ssl_show_warn = False,
    )
    

    修改后直接运行原有代码即可正常完成索引创建操作。

  • 方案2:关闭容器端HTTPS,使用纯HTTP通信
    如果你不需要传输层加密,需要调整Docker启动命令,追加关闭HTTP层SSL的环境变量后重新创建容器:

    docker run -p 9200:9200 -p 9600:9600 \
    -e "discovery.type=single-node" \
    -e "plugins.security.ssl.http.enabled=false" \
    opensearchproject/opensearch:1.0.0
    

    容器启动完成后,你原有写的use_ssl = False的Python代码可直接连接,对应的curl测试命令也需要将前缀改为http://才能正常访问。

验证提示

配置修改完成后运行代码,会正常返回索引创建的JSON响应,不会再抛出连接断开类错误。排查时注意区分协议不匹配错误和端口不通的Connection refused错误:前者端口可正常连通,仅因协议不符被服务端主动断连,后者是端口无进程监听直接返回拒绝响应。

内容的提问来源于stack exchange,提问作者Kavindu Ravishka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:21:26