Updated formatting and organization to better reflect best practices
Refactored Elasticsearh components into their own class for better cohesion
Updated locking to ensure multiple threads can offer to the queue but only one can swap the reference