Skip to content

Commit

Permalink
adding discovery option to configuration (#37)
Browse files Browse the repository at this point in the history
* adding discovery option to configuration

* Update ElasticSearchExtension.java
  • Loading branch information
kamranjon authored and jexp committed Jun 3, 2017
1 parent 3fab034 commit f1a5873
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 15 deletions.
7 changes: 7 additions & 0 deletions readme.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,13 @@ elasticsearch.include_id_field=false
elasticsearch.include_labels_field=false
```

=== Discovery
By default discovery (discovering of nodes within a cluster) is turned off.
If you would like to turn discovery on, use the discovery option.
```
elasticsearch.discovery=true
```

=== Developing

To run the tests, run `mvn test`. Make sure that an elastic{search} server is running on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ public class ElasticSearchExtension extends LifecycleAdapter {
private final static Logger logger = Logger.getLogger(ElasticSearchExtension.class.getName());
private final String hostName;
private boolean enabled = true;
private final boolean discovery;
private ElasticSearchEventHandler handler;
private JestClient client;
private ElasticSearchIndexSettings indexSettings;

public ElasticSearchExtension(GraphDatabaseService gds, String hostName, String indexSpec, Boolean includeIDField, Boolean includeLabelsField) {
public ElasticSearchExtension(GraphDatabaseService gds, String hostName, String indexSpec, Boolean discovery, Boolean includeIDField, Boolean includeLabelsField) {
Map iSpec;
try {
iSpec = ElasticSearchIndexSpecParser.parseIndexSpec(indexSpec);
Expand All @@ -39,13 +40,14 @@ public ElasticSearchExtension(GraphDatabaseService gds, String hostName, String
logger.info("Elasticsearch Integration: Running " + hostName + " - " + indexSpec);
this.gds = gds;
this.hostName = hostName;
this.discovery = discovery;
}

@Override
public void init() throws Throwable {
if (!enabled) return;

client = getJestClient(hostName);
client = getJestClient(hostName, discovery);
handler = new ElasticSearchEventHandler(client, indexSettings);
gds.registerTransactionEventHandler(handler);
logger.info("Connecting to ElasticSearch");
Expand All @@ -59,9 +61,9 @@ public void shutdown() throws Throwable {
logger.info("Disconnected from ElasticSearch");
}

private JestClient getJestClient(final String hostName) throws Throwable {
private JestClient getJestClient(final String hostName, final Boolean discovery) throws Throwable {
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(JestDefaultHttpConfigFactory.getConfigFor(hostName));
factory.setHttpClientConfig(JestDefaultHttpConfigFactory.getConfigFor(hostName, discovery));
return factory.getObject();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class ElasticSearchKernelExtensionFactory extends KernelExtensionFactory<
public static abstract class ElasticSearchSettings {
public static Setting<String> hostName = setting("elasticsearch.host_name", STRING, (String) null);
public static Setting<String> indexSpec = setting("elasticsearch.index_spec", STRING, (String) null);
public static Setting<Boolean> discovery = setting("elasticsearch.discovery", BOOLEAN, "false");
public static Setting<Boolean> includeIDField = setting("elasticsearch.include_id_field", BOOLEAN, "true");
public static Setting<Boolean> includeLabelsField = setting("elasticsearch.include_labels_field", BOOLEAN, "true");
// todo settings for label, property, indexName
Expand All @@ -39,6 +40,7 @@ public Lifecycle newInstance(KernelContext kernelContext, Dependencies dependenc
return new ElasticSearchExtension(dependencies.getGraphDatabaseService(),
config.get(ElasticSearchSettings.hostName),
config.get(ElasticSearchSettings.indexSpec),
config.get(ElasticSearchSettings.discovery),
config.get(ElasticSearchSettings.includeIDField),
config.get(ElasticSearchSettings.includeLabelsField));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,17 @@
import javax.net.ssl.*;

public class JestDefaultHttpConfigFactory {
public static HttpClientConfig getConfigFor(final String hostName) throws URISyntaxException, GeneralSecurityException {
return new HttpClientConfig.Builder(hostName)
.multiThreaded(true)
.defaultSchemeForDiscoveredNodes(new URI(hostName).getScheme())
.discoveryEnabled(true)
.discoveryFrequency(1L, TimeUnit.MINUTES)
.sslSocketFactory(getSyncHttpsHandler())
.httpsIOSessionStrategy(getAsyncHttpsHandler())
.build();
public static HttpClientConfig getConfigFor(final String hostName, final Boolean discovery) throws URISyntaxException, GeneralSecurityException {
HttpClientConfig.Builder clientConfig = new HttpClientConfig.Builder(hostName)
.multiThreaded(true)
.defaultSchemeForDiscoveredNodes(new URI(hostName).getScheme())
.sslSocketFactory(getSyncHttpsHandler())
.httpsIOSessionStrategy(getAsyncHttpsHandler());
if (discovery == true) {
clientConfig.discoveryFrequency(1L, TimeUnit.MINUTES).discoveryEnabled(true);
}

return clientConfig.build();
}

private static SSLConnectionSocketFactory getSyncHttpsHandler() throws GeneralSecurityException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class JestDefaultHttpConfigFactoryTest {

@Before
public void beforeEach() throws Throwable {
subject = JestDefaultHttpConfigFactory.getConfigFor("http://localhost:9200");
subject = JestDefaultHttpConfigFactory.getConfigFor("http://localhost:9200", true);
}

@Test
Expand Down Expand Up @@ -50,7 +50,7 @@ public void itDefaultsToHttp() {

@Test
public void itCanSSL() throws Throwable {
subject = JestDefaultHttpConfigFactory.getConfigFor("https://localhost:9200");
subject = JestDefaultHttpConfigFactory.getConfigFor("https://localhost:9200", true);

assertEquals("https://", subject.getDefaultSchemeForDiscoveredNodes());
}
Expand Down

0 comments on commit f1a5873

Please sign in to comment.