Master

Elasticsearch module integration.

First functional reads approach without Java API elasticsearch filter/queries DSL integration.
This is a good point and a tricky one. You are absolutely right and this map shoudn't be static. I defined it as static because I was accesing the map from the static detectSchema method. After thinking about it for a while I found out that although it will work for different datacontexts using different ES clients the map will contain indexname-indextype mapping that belongs to a different ES cluster which is not good at all.

It's a pity that we can't access to the map from this method because we were taking advantage of the schema detection to fill it out. The solution I came across is move this logic to a new method "fetchIndexNameFromES". We will call this method the first time we access a table and it will call ES to fetch its indexName.