Split up ElasticSearch backend
This is to allow parts of the ES backend to be imported without needing elasticsearch-py installed