How to run elasticsearch 5.1 built into my Java application?

With elasticsearch 2.x, I used the following code to run the built-in Node for testing:

@Bean public Node elasticSearchTestNode() { return NodeBuilder.nodeBuilder() .settings(Settings.settingsBuilder() .put("http.enabled", "true") .put("path.home", "elasticsearch-data") .build()) .node(); } 

It no longer compiles. How to run embedded Node in 5.x?

+4
java elasticsearch
source share
2 answers

Elasticsearch embedding is no longer officially supported, and it's a bit more complicated than 2.x, but it works.

You need to add some dependencies:

  <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.1.1</version> <scope>test</scope> </dependency> <dependency><!-- required by elasticsearch --> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>5.1.1</version> <scope>test</scope> </dependency> <dependency><!-- required by elasticsearch --> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> </dependency> 

And then run node as follows:

 @Bean public Node elasticSearchTestNode() throws NodeValidationException { Node node = new MyNode( Settings.builder() .put("transport.type", "netty4") .put("http.type", "netty4") .put("http.enabled", "true") .put("path.home", "elasticsearch-data") .build(), asList(Netty4Plugin.class)); node.start(); return node; } private static class MyNode extends Node { public MyNode(Settings preparedSettings, Collection<Class<? extends Plugin>> classpathPlugins) { super(InternalSettingsPreparer.prepareEnvironment(preparedSettings, null), classpathPlugins); } } 
+10
source share

Not supported.

You should read this blog post .

EDIT:

This is how I solved the integration tests with the maven problem .

+2
source share

All Articles