A set of classes for using [Elasticsearch](version 2.3.0 and higher) in a [Dropwizard]application.
The package provides a [lifecycle-managed] (http://dropwizard.io/1.0.0/docs/manual/core.html#managed-objects) client class (ManagedEsClient
), a configuration class with the most
common options (EsConfiguration
), and some health checks which can instantly be used in any Dropwizard application.
NOTE: We made a fork from the original project so that we could support more recent versions of Elasticsearch (5). Latest version supported is 5.6.2 (see releases).
Just add EsConfiguration
to your Configuration class and
create an ManagedEsClient
instance in the run method of your service.
You can also add one of the existing health checks to your Environment
in the same method. At least the usage of EsClusterHealthCheck
is strongly advised.
public class DemoApplication extends Application<DemoConfiguration> {
// [...]
@Override
public void run(DemoConfiguration config, Environment environment) {
final ManagedEsClient managedClient = new ManagedEsClient(configuration.getEsConfiguration());
environment.lifecycle().manage(managedClient);
environment.healthChecks().register("ES cluster health", new EsClusterHealthCheck(managedClient.getClient()));
// [...]
}
}
The following configuration settings are supported by EsConfiguration
:
nodeClient
: Whentrue
,ManagedEsClient
will create aNodeClient
, otherwise aTransportClient
; default:true
servers
: A list of servers for usage with the created TransportClient ifnodeClient
isfalse
clusterName
: The name of the Elasticsearch cluster; default: "elasticsearch"settings
: Any additional settings for Elasticsearch, see ConfigurationsettingsFile
: Any additional settings file for Elasticsearch, see Configuration
An example configuration file for creating a Node Client could like this:
clusterName: MyClusterName
settings:
node.name: MyCustomNodeName
The order of precedence is: nodeClient
/servers
/clusterName
> settings
> settingsFile
, meaning that
any setting in settingsFile
can be overwritten with settings
which in turn get overwritten by the specific settings
like clusterName
.
This project is available on Maven Central. To add it to your project simply add the following dependencies to your
pom.xml
:
<dependency>
<groupId>io.dropwizard.modules</groupId>
<artifactId>dropwizard-elasticsearch</artifactId>
<version>1.0.0-1</version>
</dependency>
Please file bug reports and feature requests in GitHub issues.
Thanks to Alexander Reelsen (@spinscale) for his Dropwizard Blog Sample which sparked the idea for this project.
Copyright (c) 2013-2016 Jochen Schalanda
This library is licensed under the Apache License, Version 2.0.
See http://www.apache.org/licenses/LICENSE-2.0.html or the LICENSE file in this repository for the full license text.