在elasticsearch 1.x中,我曾打电话:
org.elasticsearch.bootstrap.Elasticsearch.main(args)
但是在5.x中,他们使类org.elasticsearch.bootstrap.Elasticsearch包私有(默认),所以我不能再以简洁的方式从java代码运行ES服务器了。有没有其他简洁的方法(与Runtime exec或Apache Commons Exec不同)?
谢谢!
答案 0 :(得分:1)
你做不到。它不受支持。
请参阅https://www.elastic.co/blog/elasticsearch-the-server
不支持嵌入式弹性搜索
有些用户将Elasticsearch作为嵌入式运行。我们不会阻止他们这样做,但我们不能支持它。嵌入Elasticsearch会绕过安全管理器,Jar Hell检查,引导程序检查和插件加载。它本质上是不安全的,不建议用于生产。为了我们的开发人员和支持团队的理智,我们不能支持那些禁用我们已添加的所有安全机制的用户。出于同样的原因,我们不会接受拉取请求或专门为支持嵌入式用例而进行更改
答案 1 :(得分: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(参数);