仅在使用python3

时间:2017-05-09 05:20:43

标签: python python-3.x elasticsearch elasticsearch-py

我一直在尝试使用python的elasticsearch库连接到我的ElasticSearch主机。 所以代码看起来像:

client = Elasticsearch(
        ["https://my-machine.io:9200"],
        http_auth=("user", "password")
    )

现在的问题是这条指令只在我使用python 2.7解释器时才有效,而在python 3.6中失败,会产生以下错误:

File "/usr/local/lib/python3.6/site-packages/elasticsearch/client/__init__.py", line 171, in __init__
    self.transport = transport_class(_normalize_hosts(hosts), **kwargs)
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/transport.py", line 108, in __init__
    self.set_connections(hosts)
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/transport.py", line 163, in set_connections
    connections = list(zip(connections, hosts))
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/transport.py", line 160, in _create_connection
    return self.connection_class(**kwargs)
  File "/usr/local/lib/python3.6/site-packages/elasticsearch/connection/http_urllib3.py", line 78, in __init__
    raise ImproperlyConfigured("Root certificates are missing for certificate "
elasticsearch.exceptions.ImproperlyConfigured: Root certificates are missing for certificate validation. Either pass them in using the ca_certs parameter or install certifi to use it automatically.

Python版本:

$ python2 --version
Python 2.7.13
$ python3 --version
Python 3.6.1

在这两种情况下,我都使用“elasticsearch”软件包,版本5.3.0

我无法找到任何基于所使用的python版本提出不同行为的文档。 谁能解释为什么会发生这种情况?

1 个答案:

答案 0 :(得分:5)

看起来问题出在您的ssl设置中,请确保安装了certifi,这将提供所需的根证书。