我正在尝试连接我本地的elasticsearch,我想知道在继续处理之前我怎么知道连接成功或失败: 我希望通过下面的方式可以使用但不是(它返回太多的值,但都没用):
try:
es = Elasticsearch(['http://localhost:9200/'], verify_certs=True)
except Exception as err:
if "Connection refused" in err.message:
logging.error("Connection failed")
我希望有一种方法可以像这样检查连接状态:
if es == false:
raise ValueError("Connection failed")
答案 0 :(得分:20)
您可以在创建Elasticsearch
实例后调用ping
,如下所示:
es = Elasticsearch(['http://localhost:9200/'], verify_certs=True)
if not es.ping():
raise ValueError("Connection failed")
答案 1 :(得分:0)
我有同样的 urllib3.exceptions.ProtocolError
问题,所以我自己解决了。
import requests
def isRunning(self):
try:
res = requests.get("http://localhost:9200/_cluster/health")
if res.status_code == 200:
if res.json()['number_of_nodes'] > 0:
return True
return False
except Exception as e:
print(e)
return False