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();
}
}