如何将elasticsearch dbapi与Open Distro一起用于elasticsearch,忽略ssl证书
我使用Open Distro for Elasticsearch 1.13.2,Python 3.7,Elasticsearch客户端7.12.1,sqlalchemy:1.4.17,eland:7.10.1b1
这项工作:
from elasticsearch import Elasticsearch
es = Elasticsearch (['https: // admin: admin @ localhost: 9200 /'], use_ssl = True, verify_certs = False, ssl_show_warn = False)
res = es.indices.get_alias ("*")
print (res)
这也起作用:
import eland as ed
df = ed.DataFrame (es, es_index_pattern = "kibana_sample_data_flights")
df
但是以下操作不起作用,因为自签名证书会导致连接错误:
# Using sqlalchemy
from sqlalchemy.engine import create_engine
engine = create_engine (
"odelasticsearch + https: // admin: admin @ localhost: 9200 /"
)
rows = engine.connect (). execute (
"select Carrier, count (*) from kibana_sample_data_flights GROUP BY Carrier"
)
print ([row for row in rows])
错误消息的一部分:错误:[("SSL例程"、"tls_process_server_certificate"、"证书验证失败"(]
以下也不起作用:
# Using elasticsearch-dbapi
from es.elastic.api import connect
conn = connect (host = 'localhost')
curs = conn.cursor ()
curs.execute (
"select * from kibana_sample_data_flights LIMIT 10"
)
print ([row for row in curs])
错误消息的一部分:ProtocolError:("连接中止。",RemoteDisconnected("远程结束关闭的连接而无响应"(
现在这与sqlalchemy 一起工作
# sqlalchemy
from sqlalchemy.engine import create_engine
ssl_args = {"use_ssl": True, "verify_certs": False, "ssl_show_warn": False}
engine = create_engine (
"odelasticsearch + https: // admin: admin @ localhost: 9200 /"
, connect_args = ssl_args
)
rows = engine.connect (). execute (
"select Carrier, count (*) from kibana_sample_data_flights GROUP BY Carrier"
)
print ([row for row in rows])
只需要使用弹性搜索dbapi 来解决问题