We dealt with these breaking Elasticsearch 5.x client changes in our fork of the UR. I've tried to merge these changes back with the main UR source tree, but the ES5 support was not already present so very difficult to pull request. Anyway, we definitely slayed some dragons with the help of Donald Szeto.
What we ended up with is a UR/EsClient that generates its own Elasticsearch RestClient using the Storage config, instead of instantiating PredictionIO's ESStorageClient. This solved a tangled mess of Apache HTTP dependency version conflicts. If you'd like to see what is working well for us (in production, under load), check out this [merged] PR to our fork:
It would be wonderful to have your main UR working with this ES5 capability. Let me know if you have questions about our approach,