[esrally] The principle of esrally to test the performance of elasticsearch?

Now, your know, I already installed esrally successfully.
I want to know the principle of esrally.

As far as I know, from the running logs,
Firstly, esrally running as "building from source", and download the newest elasticsearch from elastic.co.
Secondly, esrally will running elasticsearch, elasticsearch running port is 39200( you konw, the normal elasticsearch port is 9200) send many request(including the data to building elaticsearch index)to eslaticsearch to test the performance.
Thirdly, esrally running for a long time, Calculate and present the results.

If I said is incorrect, please let me know.
Thank you.

Hi @laoyang360,

your understanding is almost correct.

You mix two things here. If you run esrallyit assumes quite some defaults. This is the command that is actually run (spelling out all defaults explicitly):

esrally race --pipeline=from-sources-complete --revision=current --track=geonames --challenge=append-no-conflicts --car=defaults

The selected pipeline from-sources-completeadvises Rally to build Elasticsearch from sources and the parameter revision tells it to build the currently checked out version. The only thing that is downloaded are dependencies of Elasticsearch that are needed to build it. The artifact itself is built on your machine.

In contrast to that, you can also specify a pipeline called from-distribution. Then Rally will not build Elasticsearch from source code but will download a binary distribution from the official download site. This is also the only way you can benchmark versions before Elasticsearch 5.0.

This is correct. Rally chooses this port by intention in order to reduce the risk of accidentally benchmarking an already running Elasticsearch on the default port.


Hi, @danielmitterdorfer:
Thanks, from what your reply, I know that:
When I running esrally --pipline=from-distribution --distribution-version=2.3.4, Rally will download Elasticsearch from https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz

When I just running esrally, that equal with running
esrally race --pipeline=from-sources-complete --revision=current --track=geonames --challenge=append-no-conflicts --car=defaults

In my local machine source path, I only find the follow installed information:

So, I want to know exactly, When I just running esrally, which version of elasticsearch downloaded?
your know, the neweset version of elasticsearch is 2.3.4.
As far as I know, the esrally download the newest source of elasticsearch, and running it.
When the esrally running over, the elasticsearch process killed. and the port 39200 listen over. just like:

Whether I thinking is correct or not? please let me know, Thanks!

Hi @laoyang360,

It seems to me that you still mix up two fundamentally different things:

  1. Building from sources
  2. Retrieving an official binary distribution

In the first case Elasticsearch is built from the source code, right there on your machine. Elasticsearch is not downloaded, it is "created" on your machine so to speak. If you want to know the version, you can run git rev-parse HEAD in the source directory. It will show you the exact git hash. If you don't mean that but the Elasticsearch version it is at least some ES 5 version as Rally cannot build earlier version from sources.


Hi, @danielmitterdorfer:
Thank you for your reply. I know the difference of the two method.
One is building from source, and source address is : https://github.com/elastic/elasticsearch.
And the other one is retrieving an official binary distribution which address is: https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.3.5/elasticsearch-2.3.5.zip

My git hash is:
[root@laoyang src]# git rev-parse HEAD

Thank you again.