如何从Java应用程序(而不是通过命令行)运行elasticsearch 5.1服务器

时间:2017-01-24 16:35:30

标签: java elasticsearch elasticsearch-5

在elasticsearch 1.x中,我曾打电话:

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

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

谢谢!

2 个答案:

答案 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(参数);