检查python中的elasticsearch连接状态

时间:2015-07-03 13:34:12

标签: python elasticsearch

我正在尝试连接我本地的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")

2 个答案:

答案 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