Error Benchmarking AWS Managed Elasticsearch Cluster (version 7.10) using esrally

I'm attempting to benchmark an AWS Managed Elasticsearch Cluster (version: 7.10) using esrally, but I'm encountering the following error:

    ____        ____
   / __ \____ _/ / /_  __
  / /_/ / __ `/ / / / / /
 / _, _/ /_/ / / / /_/ /
/_/ |_|\__,_/_/_/\__, /
                /____/

[INFO] Race id is [a84cd7ee-f35e-4183-a87f-508622f857fc]
[ERROR] Cannot race. Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/esrally/actor.py", line 92, in guard
    return f(self, msg, sender)
  File "/usr/local/lib/python3.9/site-packages/esrally/racecontrol.py", line 114, in receiveMsg_Setup
    self.coordinator.setup(sources=msg.sources)
  File "/usr/local/lib/python3.9/site-packages/esrally/racecontrol.py", line 203, in setup
    ) = client.factory.cluster_distribution_version(hosts, client_options)
  File "/usr/local/lib/python3.9/site-packages/esrally/client/factory.py", line 359, in cluster_distribution_version
    version = es.info()["version"]
  File "/usr/local/lib/python3.9/site-packages/elasticsearch/_sync/client/utils.py", line 414, in wrapped
    return api(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/elasticsearch/_sync/client/__init__.py", line 2296, in info
    return self.perform_request(  # type: ignore[return-value]
  File "/usr/local/lib/python3.9/site-packages/esrally/client/synchronous.py", line 178, in perform_request
    _ProductChecker.raise_error(self._verified_elasticsearch, info_meta, info_body)
  File "/usr/local/lib/python3.9/site-packages/esrally/client/synchronous.py", line 73, in raise_error
    raise UnsupportedProductError(message, meta=meta, body=body)
elasticsearch.UnsupportedProductError: The client noticed that the server is not a supported distribution of Elasticsearch

Environment Details

  • Elasticsearch Version: 7.10 (AWS Managed)
  • esrally Version: [2.11.0]

Command used :

esrally  race --pipeline benchmark-only \
--track=geonames --challenge append-no-conflicts-index-only \
--target-host=https://cluster-endpoint \
--client-options="use_ssl:true,basic_auth_user:'user',basic_auth_password:'password',verify_certs:false"

Additional Information

I've ensured that the cluster is accessible from the EC2 instance from where the benchmark should be done and that the necessary configurations are in place.
Any guidance or help on resolving this issue would be greatly appreciated.

Thank you!

Welcome!

It's because the version which runs there is a "modified" version of Elasticsearch.
I guess you need to use an older version of Rally in that case, but I don't know which one.

Did you look at Cloud by Elastic, also available if needed from AWS Marketplace?

Cloud by elastic is one way to have access to all features, all managed by us. Think about what is there yet like Vector Search, Security, Monitoring, Reporting, ES|QL, Canvas, Maps UI, Alerting and built-in solutions named Observability, Security and what is coming next :slight_smile: ...

Thanks for the prompt reply,

I've tried with an older version "2.8.0" but in this case I'm recieving a different error message :

    ____        ____
   / __ \____ _/ / /_  __
  / /_/ / __ `/ / / / / /
 / _, _/ /_/ / / / /_/ /
/_/ |_|\__,_/_/_/\__, /
                /____/

[INFO] Race id is [b1acedb2-86aa-44ad-841e-7051d86093e4]
[ERROR] Cannot race. Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/esrally/actor.py", line 92, in guard
    return f(self, msg, sender)
  File "/usr/local/lib/python3.9/site-packages/esrally/racecontrol.py", line 110, in receiveMsg_Setup
    self.coordinator.setup(sources=msg.sources)
  File "/usr/local/lib/python3.9/site-packages/esrally/racecontrol.py", line 186, in setup
    distribution_version = mechanic.cluster_distribution_version(self.cfg)
  File "/usr/local/lib/python3.9/site-packages/esrally/mechanic/mechanic.py", line 285, in cluster_distribution_version
    es = client_factory(hosts, client_options).create()
  File "/usr/local/lib/python3.9/site-packages/esrally/client/factory.py", line 181, in create
    from esrally.client.synchronous import RallySyncElasticsearch
  File "/usr/local/lib/python3.9/site-packages/esrally/client/synchronous.py", line 32, in <module>
    from elasticsearch.compat import warn_stacklevel
ImportError: cannot import name 'warn_stacklevel' from 'elasticsearch.compat' (/usr/local/lib/python3.9/site-packages/elasticsearch/compat.py)

7.10.2 was released more than 3 years ago. January 14, 2021.
So you need to find a version which is older than that I think. 2.0.0 might work.

But, do not use a 7.10.2 version. It's outdated, unsafe...

I'd at least upgrade to 7.17.21 or better to 8.14.0. So many things have changed since then...

There has never been an Elasticsearch version 2.8.0. I suspect you're using an entirely different product, possibly OpenSearch? OpenSearch and Elasticsearch have some common ancestry but they diverged many years ago and are now quite different. Rally is for benchmarking Elasticsearch, I doubt it'll work with any other systems.

OpenSearch/OpenDistro are AWS run products and differ from the original Elasticsearch and Kibana products that Elastic builds and maintains. You may need to contact them directly for further assistance. See What is OpenSearch and the OpenSearch Dashboard? | Elastic for more details.

(This is an automated response from your friendly Elastic bot. Please report this post if you have any suggestions or concerns :elasticheart: )

1 Like

I guess he said Rally 2.8.0. :wink:

1 Like

I was refering to the version of Rally we are trying to use

seems that AWS isn't supporting later versions than 7.10.0 of Elasticsearch

After version 7.10 the license changed and AWS can no longer offer Elasticsearch as a service. As this version is very old and no longer maintained I would recommend you upgrade to a newer version.

Elastic offers Elasticsearch as a service on AWS through Elastic Cloud. This supports all the latest features and versions.

If you do not want to go down this way, AWS forked the version you are currently using and created OpenSearch for their search service. As David stated it has developed separately from Elasticsearch and now has it's own ecosystem and client libraries.

1 Like

Apologies, TIL that both Rally and OpenSearch have pretty much the same version numbers right now :slight_smile:

That said, even the service that AWS call "Elasticsearch 7.10" is not really Elasticsearch - the divergence between Elasticsearch and AWS's offering started before that point. But yeah echoing what Christian and DavidP say: 7.10 is really old now, Elasticsearch has moved on a long way since then and our only real recommendation is to upgrade to a supported version ASAP.

Thank you all for your valuable answers. I appreciate your help and insights!

1 Like