Hey guys,

I am trying to use Elasticsearch in an OSGi environment, which doesn't seem to 
be that easy. They have two jars that they provide as clients (since 
elasticsearch 5)

- elasticsearch-rest-client
- elasticsearch-rest-high-level-client [1]

The first one is a low level api client, it uses apache http client to send 
json requests to a elasticsearch cluster. The second one, the high level 
client, uses the low level client and has all the marshalling and unmarshalling 
of the results included. How this was built though, is by using the already 
existing classes before elasticsearch 5, which had a internal java transport 
client inside the core elasticsearch project, and use those to marshall and 
unmarshall. This way existing clients didn't need a big migration to the new 
high level client.

This of course comes with a downside, if you want to use the high level client, 
you have to include the entire elasticsearch jar, and in consequence all the 
dependencies, which is a lot more than you want from just a rest client jar. So 
what I would like to achieve is to sort of shade a fatJar which takes the 
elasticsearch-rest-high-level-client jar, which only has like 4 java classes!, 
and calculate all the needed classes to run those 4 java classes and put them 
in one fatJar. In the end this shouldn't be that big of a jar, seeing as its 
only the GetResponse, GetResult, SearchHits and classes like that, that will be 
taken from the core elasticsearch jar and be included.

Is there an easy way to achieve this? I know you can inline classes with the 
bundle plugin, so it would just need a bit of more "automagic" to make it work 
;)

Greets,
Roy

[1] 
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html
 
<https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html>

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to