How to measure an 'Empty' operation

Hi

Because esrally doesn't support upsert's I want to try a different approach, as to use esrally only for measurements, and do the operation externally.

My question is, is there a way to make an empty operation, that will take X amount of time and this way I can try bench upsert's?

I do not see why Rally would not support upsets. You should be able to do that by creating a custom parameter source to generate the request though.

By that you mean, instead of using the dump as a source for bulk operation, I should use custom source for example :
{ "update" : {"_id" : "2", "_type" : "type1", "_index" : "index1", "_retry_on_conflict" : 3} }
{ "doc" : {"field" : "value"}, "doc_as_upsert" : true }

Is this possible? And how? If you have an example?

Thank you!

You would need to create a custom parameter source in Python and then use this in your track. The rally-eventdata-track uses this method to generate custom bulk requests and simulate a set of Kibana dashboards. This is discussed in this webinar.

Also please check the documentation for custom parameter sources.

There is a similar (older) discussion containing more guidance regarding the use of a custom parameter source for updates in this topic.

Ok, so for my use case, I should write a custom parameter source, that will just read from the file the ES qurys, for example sets of

{ "update" : {"_id" : "2", "_type" : "type1", "_index" : "index1", "_retry_on_conflict" : 3} }
{ "doc" : {"field" : "value"}, "doc_as_upsert" : true }

And then to just bind it to a bulk operation?
Also why would I have issues with clients? If each one of them reads a chunk from it?