【问题标题】:How to run elasticsearch 5.1 server from within Java application (not through command line)如何从 Java 应用程序中运行 elasticsearch 5.1 服务器(而不是通过命令行)
【发布时间】:2017-01-25 02:44:39
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

标签: java elasticsearch elasticsearch-5


【解决方案1】:

你不能。不支持。

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

不支持嵌入式 Elasticsearch

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

【讨论】:

  • Elastic 公司“不支持”,但该页面确实表明他们不会“阻止某人这样做”。
  • 是的。 IMO 有趣的是了解@xProgramery 在这里试图解决的问题是什么。可能是答案可能是别的东西。 :)
【解决方案2】:

感谢大家的回复。正如他们所提到的,不支持也不推荐。但是,如果必须,您可以在应用程序中创建一个包: 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多