我正在使用elasticsearch 2.3.1和python 2.7。我正在尝试创建一个简单的实例并测试为
esInstance = Elasticsearch(['https://'+shield_uname+":"+shield_pass+"@"+server+":"+port])
print esInstance.info()
但是我得到了
elasticsearch.exceptions.SSLError: ConnectionError(EOF occurred in violation of protocol (_ssl.c:590)) caused by: SSLError(EOF occurred in violation of protocol (_ssl.c:590))
我在做错了什么?我尝试时遇到同样的错误
requests.get("https://"+shield_uname+":"+shield_pass+"@"+server+":"+port, verify=False)
我该如何解决这个问题?
答案 0 :(得分:1)
我认为你只是passing the fields as arguments会更好,因为你已经将它们作为单独的变量。
这是最全面的"版本的身份验证示例,插入变量:
# SSL client authentication using client_cert and client_key
es = Elasticsearch(
[server],
http_auth=(shield_uname, shield_pass),
port=port,
use_ssl=True,
verify_certs=True,
ca_certs='/path/to/cacert.pem',
client_cert='/path/to/client_cert.pem',
client_key='/path/to/client_key.pem',
)
请注意port
之后的参数都处理SSL。如果您实际使用的是证书,那么您需要确保已经告诉Python有关它们的信息。如果您使用的是标准证书,则可以使用certifi
,如上面的链接所示。