1

在 elasticsearch 1.x 中,我曾经调用:

org.elasticsearch.bootstrap.Elasticsearch.main(args)

但是在 5.x 中,他们将类 org.elasticsearch.bootstrap.Elasticsearch 包私有(默认),所以我不能再以简洁的方式从 java 代码运行 ES 服务器了。是否有任何替代的简洁方法(不同于 Runtime exec 或 Apache Commons Exec)?

谢谢!

4

2 回答 2

1

你不能。不支持。

https://www.elastic.co/blog/elasticsearch-the-server

不支持嵌入式 Elasticsearch

一些用户将 Elasticsearch 作为嵌入式运行。我们不会阻止他们这样做,但我们不能支持它。嵌入 Elasticsearch 绕过了安全管理器、Jar Hell 检查、引导检查和插件加载。它本质上是不安全的,不推荐用于生产。为了我们的开发人员和支持团队的理智,我们不能支持禁用我们出于充分理由添加的所有安全机制的用户。出于同样的原因,我们不会接受拉取请求或专门进行更改以支持嵌入式用例

于 2017-01-24T16:37:42.463 回答
0

谢谢大家的回复。正如他们所提到的,不支持也不推荐。但是,如果必须,您可以在应用程序中创建一个包:org.elasticsearch.bootstrap

然后从源代码复制/粘贴 Elasticsearch 类: https ://github.com/elastic/elasticsearch/blob/5.1/core/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

然后从您的应用程序中,您可以调用 main 方法并将您的参数传递给它: ElasticsearchLauncher.main(args);

于 2017-01-24T18:44:39.837 回答