I don't know OPs pain points, but mine were quite simply that the query DSL for ElasticSearch seems to be a thin wrapper over Apache Lucene. If you have experience working with Lucene, picking ElasticSearch isn't that difficult. If you've never worked with Lucene before a lot of the concepts aren't necessarily obvious, and it's incredibly easy to write queries that won't return what you expect but won't fail either. My experience trying to configure analyzers and trying to adjust search parameters involved a ton of trial and error.