elastic4s
Elasticsearch Scala Client - Reactive, Non Blocking, Type Safe, HTTP
...Each request is an immutable object, so you can create requests and safely reuse them, or further copy them for derived requests. Because each request is strongly typed your IDE or editor can use the type information to show you what operations are available for any request type.