Community contributed extensions

  1. 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).

    1. Prerequisites

Play! 1.1

      1. Install the module

Install the elasticsearch module from the modules repository:

play install elasticsearch

      1. Enable the module

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


      1. Configure the module

You need to configure the module by setting these properties in your application.conf:

# Elastic Search

Local Model is the only supported at this point which embeds an Elastic Search instance with Play!. Elastic Search runs on port 9002.

All of the properties are required.

    1. Usage

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;


    1. Searching

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.

    1. User Interface

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

    1. Source Code

Fork it on Github

    1. Roadmap

-> Add support to external instances using TransportClient.
-> Add different methods of notification (ElasticSearch River, AMQP, JMS)
-> Adding support for non-Jpa models.

    1. Credits

-> Shay Banon for the great work with Elastic Search and Compass, I have been following his work for a few years, great stuff.
-> Ben Birch ( for the work on the User Interface.