通过python连接到Elasticsearch

ubof19bj  于 2023-02-21  发布在  ElasticSearch
关注(0)|答案(1)|浏览(225)

我正在Azure VM上运行默认设置的elasticsearch-8.6.1,端口5601打开。这是一个只有一个集群的开发服务器。我可以启动Elasticsearch、Kibana和Logstash服务,并通过浏览器查看它们。
我有一些python代码,它尝试使用推荐的通过ca_certification路由验证https的路由连接到ElasticSearch,如https://www.elastic.co/guide/en/elasticsearch/client/python-api/master/connecting.html
我已经将http_ca. crt文件从VM复制到本地计算机上并使其可访问。

es = Elasticsearch('https://localhost:9200',
                   ca_certs=CA_CERT,
                   basic_auth=(USER_ID,ELASTIC_PASSWORD))

Elasticsearch. yml启用了以下功能
network.host : 0.0.0.0
http.host : 0.0.0.0
xpack.security.enabled:真
我很感激我可以关闭安全性,但这不是一个可持续的方法。
我得到的错误是
弹性传输。连接错误:导致连接错误的原因:ConnectionError(连接错误由以下原因引起:连接错误(0x000001890CEF3730上的连接对象):无法建立新连接:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了该连接))
我怀疑我在某处遗漏了一些配置设置。
提前感谢任何建议或指针,可以提供.

7uzetpgm

7uzetpgm1#

错误消息表明Python代码无法在指定的主机和端口上建立到Elasticsearch的连接。可能有几个原因,包括网络配置问题或SSL/TLS证书的问题。
以下是您可以尝试解决此问题的一些方法:
检查Elasticsearch是否在正确的主机和端口上运行和侦听。您可以使用curl命令来测试连接:

curl -k https://localhost:9200

如果Elasticsearch正在运行,您应该看到一个JSON响应,其中包含有关集群的信息。
检查SSL/TLS证书是否有效,是否被Python客户端所信任,你可以使用openssl命令来检查证书:

openssl x509 -in http_ca.crt -text -noout

这将显示有关证书的详细信息。请确保“颁发者”和“使用者”字段匹配,并且"有效日期“正确。
检查Azure VM上的防火墙是否阻止端口9200上的传入流量。你可以使用ufw命令检查防火墙规则:

sudo ufw status

如果端口9200未被列为“允许”,您可以添加新规则:

sudo ufw allow 9200/tcp

检查Python客户端是否使用了正确的ca_certs文件。
认证机构证书
变量指向正确的文件位置。
检查Elasticsearch日志中任何可能指示连接问题原因的错误消息。这些日志通常位于Elasticsearch安装的日志目录中。
希望这些步骤中的一个能帮助您解决问题。祝您好运!

相关问题