web-dev-qa-db-fra.com

Erreur ElasseSearch: "Le client a remarqué que le serveur n'est pas une distribution prise en charge de Elasticsearch '

Nouveau à Elasticsecearch. Je suivais ce guide pour obtenir des choses configurées: https://john.soban.ski/boto3-ec2-toamazon-élasticsearch.html

J'ai couru le script "Connect_To_es.py", et curieusement cela a fonctionné la première fois, mais dans une exécution ultérieure, elle a commencé à lancer cette erreur:

Traceback (most recent call last):
  File "../connect_to_es.py", line 21, in <module>
    print(json.dumps(es.info(), indent=4, sort_keys=True))
  File "/home/ubuntu/projects/.venv/lib/python3.8/site-packages/elasticsearch/client/utils.py", line 168, in _wrapped
    return func(*args, params=params, headers=headers, **kwargs)
  File "/home/ubuntu/projects/.venv/lib/python3.8/site-packages/elasticsearch/client/__init__.py", line 294, in info
    return self.transport.perform_request(
  File "/home/ubuntu/projects/.venv/lib/python3.8/site-packages/elasticsearch/transport.py", line 413, in perform_request
    _ProductChecker.raise_error(self._verified_elasticsearch)
  File "/home/ubuntu/projects/.venv/lib/python3.8/site-packages/elasticsearch/transport.py", line 630, in raise_error
    raise UnsupportedProductError(message)
elasticsearch.exceptions.UnsupportedProductError: The client noticed that the server is not a supported distribution of Elasticsearch

The Elasticsearch python Version de la bibliothèque J'ai 7.14, et mon élasticsearch sur AWS est en cours d'exécution 7.10. Toute réflexion sur ce qui se passe ici?

Copie du code:

from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth
import boto3
import json

Host = '<url>.us-east-1.es.amazonaws.com'
region = 'us-east-1'

service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

es = Elasticsearch(
    hosts = [{'Host': Host, 'port': 443}],
    http_auth = awsauth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection
)

print(json.dumps(es.info(), indent=4, sort_keys=True))
2
de1337ed

Comme certaines des autres réponses indiquent, vous pouvez rétrograder en ce moment mais opensearch-py est une meilleure solution à long terme

Il devrait s'agir d'un remplacement d'une chute d'élasticsearch-py et il sera mis à jour et corrigé au fil du temps. Il soutient OSS Elasticsearch et Opensearch.

0
stockholmux