J'ai essayé d'utiliser la bibliothèque elasticsearch de python pour me connecter à ma machine hôte ElasticSearch. Ainsi, le code ressemble à:L'instanciation d'un client Elasticsearch échoue uniquement lors de l'utilisation de python3
client = Elasticsearch(
["https://my-machine.io:9200"],
http_auth=("user", "password")
)
Maintenant, le problème est que cette instruction ne fonctionne que lorsque j'utilise l'interpréteur Python 2.7, alors qu'il échoue avec python 3.6, générant l'erreur suivante:
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.
versions Python:
$ python2 --version
Python 2.7.13
$ python3 --version
Python 3.6.1
Dans les deux cas j'utilise le paquet "ElasticSearch", version 5.3.0
Je n'ai pas été en mesure de trouver une pièce de documentation qui suggérerait un comportement différent en fonction de la version de python utilisée. Quelqu'un pourrait-il expliquer pourquoi cela se passe-t-il?
Quelle version du module elasticsearch utilisez-vous dans chaque cas? –
Cela pourrait aider: https://access.redhat.com/articles/2039753 – Val
Avec quelle version de python 2 cela fonctionnait-il? (parce que le mécanisme par défaut d'urllib est maintenant de vérifier les certificats par défaut). Lors de l'instanciation de votre client, avez-vous essayé d'utiliser l'argument 'verify_certs = False'? – Adonis