Community contributed extensions

Play Framework – Elastic Search Module

by Felipe Oliveira

Integrate Elastic Search in a Play! Framework Application. This module uses JPA events to notify Elastic Search of events of their own. In Local Mode it embeds a running Elastic Search instance (port 9002 by default), a good choice for development. In Client Mode it connects to an external instance of Elastic Search, that might be your setup in production.


Play! 1.1

Install the module

Install the elasticsearch module from the modules repository:

play install elasticsearch

Enable the module

After installing the module, add the following to your application.conf to enable it:


Configure the module

You need to configure the module by setting these properties in your application.conf. There are two ways to run your Play! app with Elastic Search, local mode or client mode. Local mode works well for development purposes, an Elastic Search instance will run on the same JVM as your Play! application automatically. You won’t need to setup another service, etc. The second option is client mode which fits better in a production environment. The default option is local mode.

@# Option 1) Elastic Search (Local Model)

@# Option 2) Elastic Search (Client Model)


You basically need to add annotation “@ElasticSearchable” to your Model class. It only works for JPA so far.


public class Post extends Model {

public String title;

public Date postedAt;



import static org.elasticsearch.index.query.xcontent.FilterBuilders.*;
import static org.elasticsearch.index.query.xcontent.QueryBuilders.*;

org.elasticsearch.client.Client client = ElasticSearch.client();
SearchResponse response = client.prepareSearch(“test”)
.setQuery(termQuery(“multi”, “test”))

See Elastic Search for more information.

User Interface

After you start your application (play run), you should have an admin interface automatically running on http://localhost:9000/es-admin/(http://localhost:9000/es-admin/).

Source Code

Fork it on Github