if(Constants.ELASTIC_NODE_CLIENT.equals(elasticClient)) {
File tempDir = null;
try {
//Settings settings = ImmutableSettings.settingsBuilder().put("script.inline", "on").build();
Settings.Builder builder = Settings.builder()
.put("path.data", ZephyrInitializer.getElasticsearchDataDirPath())
.put("script.disable_dynamic", "false")
.put("script.inline", "on")
.put("script.indexed", "on")
for(Object prop : props.keySet()) {
String key = prop.toString();
if(!key.equals("elastic.client") && key.startsWith("elastic.")) {
String elasticKey = key.split("elastic.")[1];
builder.put(elasticKey, props.getProperty(key));
}
}
if(elasticMaxClauseCount != null) {
if(StringUtils.isNumeric(elasticMaxClauseCount)) {
builder.put("index.query.bool.max_clause_count", Integer.valueOf(elasticMaxClauseCount));
}
}
Settings settings = builder.build();
node = new Node(settings);//.clusterName(elasticClusterName).node();
client = node.client();
logger.info("Bringing up elastic search in node mode" + client);
} catch (IOException e) {
e.printStackTrace();
}
如果我没有设置路径,即path.home,我会报错-
java.lang.IllegalStateException: path.home is not configured
如果我通过-.put(“path.home”,
"D:\\elasticSearch\\elasticsearch-5.5.0\\bin"); -
设置path.home我遇到错误-
最佳答案
我花了大量时间研究jar代码,即。 elasticsearch-2.4.4,org.elasticsearch.node.internal.InternalSettingsPreparer.prepareEnvironment()
方法。使用nodebuilder nodeBuilder.local(true).settings(esSettings).node().client()
准备NodeClient时会出现异常。解决此问题的方法是提供
在vm参数中。这就是数据节点知道必须将数据放在何处的方式。每当找不到“path.home”时,都会从vm参数中获取它,并引用上述属性。
关于java - 如何通过节点客户端(而不是通过传输)在 Elasticsearch 中设置路径(path.home),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47631475/