From 23163cc1ed9030d0f97136896ceb8e3b8a75221a Mon Sep 17 00:00:00 2001 From: Jason Tedor <jason@tedor.me> Date: Mon, 7 Aug 2017 14:02:21 +0200 Subject: [PATCH] Elasticsearch 5: Fix handling of settings Since Elasticsearch 5, Elasticsearch is now strict about settings. This means that if you pass it a setting that it does not recognize, Elasticsearch will throw an exception whereas previously it was lenient in such situations. This commit removes passing all properties as settings to Elasticsearch in favor of a special prefix es.setting for which properties prefixed with this will be passed as settings to Elasticsearch. --- .../ycsb/db/elasticsearch5/ElasticsearchClient.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java b/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java index a76f2094..52c41776 100644 --- a/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java +++ b/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java @@ -94,7 +94,14 @@ public class ElasticsearchClient extends DB { // if properties file contains elasticsearch user defined properties // add it to the settings file (will overwrite the defaults). - settings.put(props); + for (final Entry<Object, Object> e : props.entrySet()) { + if (e.getKey() instanceof String) { + final String key = (String) e.getKey(); + if (key.startsWith("es.setting.")) { + settings.put(key.substring("es.setting.".length()), e.getValue()); + } + } + } final String clusterName = settings.get("cluster.name"); System.err.println("Elasticsearch starting node = " + clusterName); System.err.println("Elasticsearch node path.home = " + settings.get("path.home")); -- GitLab