2017-01-24 1 views
1

In Elasticsearch 1.x laufen, habe ich zu nennen:Wie Elasticsearch 5.1-Server aus Java-Anwendung (nicht über Kommandozeile)

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

Aber in 5.x sie die Klasse org.elasticsearch gemacht .bootstrap.Elasticsearch package-private (Standard), so dass ich den ES-Server nicht mehr sauber aus Java-Code ausführen kann. Gibt es eine alternative Möglichkeit dies zu tun (etwas anderes als Runtime exec oder Apache Commons Exec)?

Vielen Dank!

+1

ich das hier gefunden, vielleicht hilft Ihnen: http://stackoverflow.com/questions/41298467/how-to-start-elasticsearch-5-1-embedded-in-my-java-application/41299436# 41299436 – rage

Antwort

1

Sie können nicht. Es wird nicht unterstützt.

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

Elasticsearch Embedded nicht unterstützt

Einige Benutzer Elasticsearch laufen wie eingebettet. Wir werden sie nicht davon abhalten, aber wir können es nicht unterstützen. Das Einbetten von Elasticsearch umgeht den Sicherheitsmanager, die Jar Hell-Prüfungen, die Bootstrap-Prüfungen und das Laden von Plugins. Es ist von Natur aus unsicher und nicht für die Produktion empfohlen. Aus Gründen der Integrität unserer Entwickler und des Supportteams können wir keine Benutzer unterstützen, die alle Sicherheitsmechanismen deaktivieren, die wir aus guten Gründen hinzugefügt haben. Aus dem gleichen Grund werden wir keine Pull-Requests akzeptieren oder Änderungen vornehmen, um den eingebetteten Anwendungsfall zu unterstützen.

+1

"Nicht unterstützt" von Elastic, der Firma, aber diese Seite sagt, sie werden nicht "jemanden davon abhalten, es zu tun". –

+0

Ja. Was IMO interessant wäre, ist zu verstehen, was das Problem ist, das @xProgramery hier zu lösen versucht. Vielleicht könnte die Antwort etwas anderes sein. :) – dadoonet

0

Vielen Dank für die Antwort. Wie sie erwähnt haben, wird es weder unterstützt noch empfohlen. Allerdings, wenn Sie müssen, können Sie ein Paket in Ihrer Anwendung erstellen: org.elasticsearch.bootstrap

Und dann Kopieren/Einfügen in dem Paket der Elasticsearch Klasse von Quelle: https://github.com/elastic/elasticsearch/blob/5.1/core/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

Dann aus Ihrer Anwendung, Sie können die Hauptmethode aufrufen und Ihre Argumente an sie übergeben: ElasticsearchLauncher.main (args);

Verwandte Themen