web-dev-qa-db-de.com

Wie aktiviere ich den Fernzugriff/die Fernabfrage in Elasticsearch 2.0?

Ab Version 2.0 hört Elasticsearch standardmäßig nur auf localhost, aber ich möchte außerhalb von localhost eine Anfrage stellen.

Zum Beispiel ist eine Anfrage wie diese erlaubt:

http://localhost:9200/

Das ist aber nicht:

http://server_name:9200/ (von außerhalb des Servers, z. B. ein lokaler Computer im selben LAN).

Danke für Ihre Hilfe.

63
Abraham Duran

In config/elasticsearch.yml setzen

network.Host: 0.0.0.0
124
arsent

HTTP-Transport und interner Elasticsearch-Transport überwacht standardmäßig nur localhost . Wenn Sie auf Elasticsearch vom Host außer localhost zugreifen möchten, fügen Sie folgende Konfigurationen in config/elasticsearch.yml hinzu.

transport.Host: localhost 
transport.tcp.port: 9300 
http.port: 9200
network.Host: 0.0.0.0

Hier erlaubt network.Host als 0.0.0.0 den Zugriff von jedem Host innerhalb des Netzwerks.

20
Ajit K'sagar

Benennen Sie die elasticsearch.yml-Datei im Konfigurationsordner in elasticsearch.json um und fügen Sie Folgendes hinzu:

{
    "network" : {
        "Host" : "10.0.0.4"
    }
}

Eine weitere Option besteht darin, die Einstellungen extern bereitzustellen, entweder mit ES_Java_OPTS oder als Parameter für den Befehl elasticsearch. Beispiel:

$ elasticsearch -Des.network.Host=10.0.0.4

Eine weitere Option ist das Festlegen von es.default. Präfix statt Es. Präfix, dh die Standardeinstellung wird nur verwendet, wenn sie nicht explizit in der Konfigurationsdatei festgelegt ist.

Eine andere Option ist die Verwendung der ${...}-Notation in der Konfigurationsdatei, die in eine Umgebungseinstellung aufgelöst wird. Beispiel:

{
    "network" : {
        "Host" : "${ES_NET_Host}"
    }
}

Der Speicherort der Konfigurationsdatei kann mithilfe einer Systemeigenschaft extern festgelegt werden:

$ elasticsearch -Des.config=/path/to/config/file

Weitere Informationen finden Sie unter https://www.elastic.co/guide/de/elasticsearch/reference/1.4/setup-configuration.html

17
Deepika Chalpe

Wie bei @arsent erwähnt, fügen Sie diese IP-Adresse zur Konfigurationsdatei hinzu:

Sudo nano /etc/elasticsearch/elasticsearch.yml

Jay fügte auch einen wichtigen Punkt hinzu: Wenn Sie eine Firewall verwenden, müssen Sie eine Regel hinzufügen, die den Verkehr zu diesem Port zulässt. 

Wenn Sie einem Masterserver den Zugriff auf ES über http erlauben möchten, fügen Sie eine Regel hinzu, die den Zugriff nur von dieser bestimmten Adresse zulässt. Angenommen, Sie verwenden ufw. Führen Sie dann den folgenden Befehl aus, um Ihren Port hinzuzufügen:

Sudo ufw allow from xxx.xxx.xxx.xxx to any port zzzz

Ersetzen Sie xxx.xxx.xxx.xxx durch die IP-Adresse Ihres Masterservers und zzzz durch den in config/elasticsearch.yml konfigurierten Port.

Es wird empfohlen, einen benutzerdefinierten Port zu verwenden und den Standard 9200 nicht beizubehalten

Um dies zu testen, setzen Sie SSH in Ihren Masterserver und pingen Sie die ES-IP mit dem richtigen Port an, um zu sehen, ob Sie eine Antwort erhalten:

curl -X GET 'http://xxx.xxx.xxx.xxx:zzzz'

Sie können auch sicherstellen, dass auf ES nicht von anderen IPs aus zugegriffen werden kann, indem Sie es mit Ihrem Browser versuchen.

Es gibt ein hervorragender Artikel der zeigt, wie Sie ES auf Ubuntu auf DigitalOcean einrichten

5
Ben

Im /etc/elasticsearch/elasticsearch.yml:

network.Host: 0.0.0.0
network.bind_Host: 0.0.0.0
network.publish_Host: 0.0.0.0
1

Stellen Sie in /etc/elasticsearch/elasticsearch.yml den folgenden Wert ein: 

network.Host: [ localhost, _site_ ]

Mit dieser Option können Sie sowohl vom lokalen Host als auch von allen Computern im lokalen Netzwerk (192.168.X.X) aus zugreifen, jedoch nicht von außen.
Lesen Sie mehr über diese und andere Optionen, lesen Sie die Dokumentation

1
Mentor

Ersetzen Sie localhost an zwei Stellen durch .0.0..

  1. Gehe zu /etc/elasticsearch/elasticsearch.yml. Suchen Sie nach dem Wert in network.Host und ändern Sie ihn in .0.0.

  2. Dies ist ein Schritt, wenn Sie Kibana verwenden. Gehe zu /etc/kibana/kibana.yml. Suchen Sie nach dem Wert in server.Host und ändern Sie ihn in .0.0.

Jetzt greifen Sie mit IP-Adresse und Host über Fernzugriff zu.

1
Bikram

Fügen Sie in config/elasticsearch.yml network.Host: 0.0.0.0, wie @arsent sagte, hinzu, und fügen Sie der Firewall für Ihren ElasticSearch-Port (9200 ByDefault) ..__ eine eingehende Regel hinzu

0
Jay Shah