ElasticSearch

To use ElasticSearch as Ebean's document store we need to add configuration for ebean.docstore properties like the example below:

To test using a ElasticSearch docker container we set ebean.docstore.elastic.version property like the example below. ebean-test will then ensure that ElasticSearch is running as a docker container.

ebean:
  test:
    platform: h2
    ddlMode: dropCreate # none | dropCreate | migrations | create
    dbName: myapp

  docstore:
    url: http://127.0.0.1:9201
    active: true
    generateMapping: true
    dropCreate: true

    elastic: # For testing using docker container
      version: 5.6.0
      port: 9201

In terms of logging we can see:

21:57:06.587 INFO  io.ebean.docker.commands.Commands - Start container ut_elastic with port:9201

When using ElasticSearch by itself and not with another database leave out the ebean.test.platform section like:

ebean:
  docstore:
    url: http://127.0.0.1:9201
    active: true
    generateMapping: true
    dropCreate: true

    elastic:
      version: 5.6.0
      port: 9201

ebean-elastic dependency

Add ebean-elastic as a dependency.

<dependency>
  <groupId>io.ebean</groupId>
  <artifactId>ebean-elastic</artifactId>
  <version>13.0.0</version>
</dependency>

Configuration properties

Property Description
ebean.docstore.active Set to true to enable docstore use
ebean.docstore.url URL that ElasticSearch is expected to be using
ebean.docstore.generateMapping When true generate the index mapping
ebean.docstore.dropCreate When true drop the indexes and recreate them

For more details on the ElasticSearch.

Docker container

We can programmatically start a docker container version of ElasticContainer.

The below uses ebean-test-docker dependency which already comes with ebean-test. If we do not have a dependency on ebean-test then add io.ebean:ebean-test-docker:5.0 as a dependency.

package main;

import io.ebean.docker.commands.ElasticContainer;

public class Main {

  public static void main(String[] args) {

    ElasticContainer container = ElasticContainer.newBuilder("5.6.0")
      .build();

      container.start();
  }
}