如何将elasticsearch dbapi与Open Distro一起用于elasticsearch,忽略SSL证书



如何将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 来解决问题

最新更新