在 elasticsearch 1.x 中,我曾经调用:
org.elasticsearch.bootstrap.Elasticsearch.main(args)
但是在 5.x 中,他们将类 org.elasticsearch.bootstrap.Elasticsearch 包私有(默认),所以我不能再以简洁的方式从 java 代码运行 ES 服务器了。是否有任何替代的简洁方法(不同于 Runtime exec 或 Apache Commons Exec)?
谢谢!
在 elasticsearch 1.x 中,我曾经调用:
org.elasticsearch.bootstrap.Elasticsearch.main(args)
但是在 5.x 中,他们将类 org.elasticsearch.bootstrap.Elasticsearch 包私有(默认),所以我不能再以简洁的方式从 java 代码运行 ES 服务器了。是否有任何替代的简洁方法(不同于 Runtime exec 或 Apache Commons Exec)?
谢谢!
你不能。不支持。
见https://www.elastic.co/blog/elasticsearch-the-server
不支持嵌入式 Elasticsearch
一些用户将 Elasticsearch 作为嵌入式运行。我们不会阻止他们这样做,但我们不能支持它。嵌入 Elasticsearch 绕过了安全管理器、Jar Hell 检查、引导检查和插件加载。它本质上是不安全的,不推荐用于生产。为了我们的开发人员和支持团队的理智,我们不能支持禁用我们出于充分理由添加的所有安全机制的用户。出于同样的原因,我们不会接受拉取请求或专门进行更改以支持嵌入式用例
谢谢大家的回复。正如他们所提到的,不支持也不推荐。但是,如果必须,您可以在应用程序中创建一个包: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);