Как запустить сервер elasticsearch 5.1 из приложения Java (не через командную строку)

В elasticsearch 1.x я обычно называл:

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

Но в 5.x они сделали класс org.elasticsearch.bootstrap.Elasticsearch закрытым (по умолчанию), поэтому я больше не могу аккуратно запускать ES-сервер из java-кода. Есть ли какой-нибудь альтернативный способ сделать это (что-то отличное от Runtime exec или Apache Commons Exec)?

Спасибо!


person xProgramery    schedule 24.01.2017    source источник
comment
Я нашел это здесь, возможно, это вам поможет: stackoverflow.com/questions/41298467/   -  person rage    schedule 24.01.2017


Ответы (2)


Ты не можешь. Не поддерживается.

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

Встроенный Elasticsearch не поддерживается

Некоторые пользователи запускают Elasticsearch как встроенный. Мы не собираемся им мешать, но мы не можем этого поддержать. Встраивание Elasticsearch обходит диспетчер безопасности, проверки Jar Hell, проверки начальной загрузки и загрузку плагинов. Это небезопасно по своей сути и не рекомендуется для производства. Из соображений здравомыслия наших разработчиков и службы поддержки мы не можем поддерживать пользователей, которые отключают все механизмы безопасности, которые мы добавили по уважительным причинам. По той же причине мы не будем принимать запросы на вытягивание или вносить изменения специально для поддержки встроенного варианта использования.

person dadoonet    schedule 24.01.2017
comment
Не поддерживается компанией Elastic, но на этой странице говорится, что они не собираются никому мешать делать это. - person OneCricketeer; 24.01.2017
comment
Ага. ИМО было бы интересно понять, какую проблему пытается решить @xProgramery. Может быть, ответом может быть что-то еще. :) - person dadoonet; 24.01.2017

Спасибо всем за ответ. Как они уже упоминали, он не поддерживается и не рекомендуется. Однако при необходимости вы можете создать в своем приложении пакет: org.elasticsearch.bootstrap

Затем скопируйте / вставьте в пакет класс Elasticsearch из источника: https://github.com/elastic/elasticsearch/blob/5.1/core/src/main/java/org/elasticsearch/bootstrap/Elasticsearch..java.

Затем из своего приложения вы можете вызвать основной метод и передать ему свои аргументы: ElasticsearchLauncher.main (args);

person xProgramery    schedule 24.01.2017