Making Elasticsearch an abstract class

In order to use Elasticsearch class as a layer for upper level class, i
abstract it (and correct some calls too)