Python Elasticsearch客户端连接Docker OpenSearch出现NotSslRecordException异常如何解决
Python Elasticsearch客户端连接本地Docker OpenSearch服务失败问题及解决方案
问题描述
使用Python Elasticsearch客户端连接本地通过Docker运行的OpenSearch服务时连接失败,服务端持续抛出如下报错:
opensearch-node1 | [2021-09-25T00:09:09,526][ERROR][o.o.s.s.h.n.SecuritySSLNettyHttpServerTransport] [opensearch-node1] Exception during establishing a SSL connection: io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record:
OpenSearch按照官方指引通过Docker在本地安装部署,测试连接的代码如下:
# es = Elasticsearch(timeout=600, hosts="http://localhost:9200", http_auth=('admin', 'admin'), use_ssl=False, verify_certs=False) es = Elasticsearch(timeout=600, hosts=["http://localhost:9200"]) es.ping()
环境版本信息:
- Python版本:3.9.7
- Elasticsearch Python依赖包版本:7.15.0
解决方案
问题由两个原因导致,对应调整如下:
- 版本兼容问题:OpenSearch兼容的Elasticsearch Python客户端最高版本为7.13.4,高于该版本会出现连接异常,需先降级依赖包版本
- 客户端初始化参数调整:本地开发环境按照如下方式初始化客户端即可正常连接
es = Elasticsearch(['https://admin:admin@localhost:9200/'], use_ssl=False, verify_certs=False, ssl_show_warn=False)
内容的提问来源于stack exchange,提问作者mlablablab
相关产品推荐
相关产品推荐

