webentwicklung-frage-antwort-db.com.de

Fehler bei der Verbindung zur elastischen Suche

Wenn ich versucht habe, eine Verbindung zu Elastic Search mit dem curl http://localhost:9200 herzustellen, funktioniert es einwandfrei.

Wenn ich jedoch curl http://IpAddress:9200 ausführen, wird ein Fehler ausgegeben, der connection refused port 9200 sagt.

Wie kann man diesen Fehler beheben?

73
chinna2580

Standardmäßig sollte es an alle lokalen Adressen gebunden werden. Vorausgesetzt, Sie haben kein Problem mit der Netzwerkschicht mit Firewalls, ist die einzige ES-Einstellung, die ich überprüfen kann, network.bind_Host. Vergewissern Sie sich, dass entweder nicht festgelegt ist oder 0.0.0.0 oder ::0 oder die richtige IP-Adresse für Ihr Netzwerk festgelegt ist .

Update: Pro Kommentar in ES 2.3 sollten Sie stattdessen network.Host setzen. 

64
Andrew White

Bearbeiten Sie /etc/elasticsearch/elasticsearch.yml

Dadurch wird dieser Parameter "deaktiviert" und Verbindungen von anderen IPs werden zugelassen.

66
Ramon

Habe alles auf dieser Seite ausprobiert und nur Anweisungen von hier geholfen.

stellen Sie in /etc/default/elasticsearch sicher, dass diese nicht kommentiert sind:

START_DAEMON=true
ES_USER=elasticsearch
ES_GROUP=elasticsearch
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
RESTART_ON_UPGRADE=true

stellen Sie sicher, dass /var/lib/elasticsearch dem Benutzer von elasticsearch gehört:

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
20
dikirill

In meinem Fall wurde Elasticsearch gestartet ... aber hatte es trotzdem 

curl: (7) Failed to connect to localhost port 9200: Connection refused

Der folgende Befehl war nicht erfolgreich

Sudo service elasticsearch restart

Damit es funktioniert, musste ich stattdessen rennen

Sudo systemctl restart elasticsearch

Dann ging alles gut.

18
Kalanit

Keine der hier vorgeschlagenen Lösungen funktionierte für mich, aber was schließlich zum Funktionieren führte, war, elasticsearch.yml Folgendes hinzuzufügen:

network:
  Host: 0.0.0.0
http:
  port: 9200

Danach habe ich den Dienst neu gestartet und jetzt kann ich curl sowohl von VM als auch extern. Aus irgendeinem Grund musste ich ein paar verschiedene Varianten eines curl-Aufrufs inside the VM ausprobieren, bevor es funktionierte:

curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200

Hinweis: Ich verwende Elasticsearch 5.5 unter Ubuntu 14.04

13
Kimberly W

Warum fangen Sie nicht mit dieser Befehlszeile an:

$ Sudo service elasticsearch status

Ich habe es geschafft und bekomme:

"There is insufficient memory for the Java Runtime..."

Dann habe ich die /etc/elasticsearch/jvm.options-Datei bearbeitet:

...

################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

################################################################

...

Das hat wie ein Zauber funktioniert.

13
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

stellen Sie sicher, dass der Server gestartet ist. Ich habe dieses Problem gesehen, als meine virtuelle Maschine zu wenig RAM hatte und sie nicht starten konnte.

Sudo systemctl status elasticsearch

das obige zeigt dir ob es tatsächlich läuft.

12
Jes Chergui

Für dieses Problem musste ich verwenden: Sudo /usr/share/elasticsearch/bin/elasticsearch start

um etwas über die Ports 9200/9300 (Sudo netstat -ntlp) zu bekommen und eine Antwort auf

curl -XGET http://localhost:9200

7
DependencyHell

Ich hatte das gleiche Problem mit dem Ablehnen von Verbindungen auf dem Port 9200. Überprüfen Sie den Status des Elasticsearch-Dienstes mit dem Befehl Sudo service elasticsearch status. Wenn ein Fehler angezeigt wird und Sie alles lesen, was mit Java zu tun hat, liegt das Problem wahrscheinlich an Ihrem Jvm-Speicher. Sie können es in /etc/elasticsearch/jvm.options bearbeiten. Bei einer 1 GB RAM -Speichermaschine in einer Amazon-Umgebung behielt ich meine Konfiguration bei:

-Xms128m
-Xmx128m

Nachdem das eingestellt und der elasticsearch-Dienst neu gestartet wurde, funktionierte es wie ein Zauber. Die Überprüfung von Nmap und UFW (wenn Sie eine lokale Firewall verwenden) sollten ebenfalls nützlich sein.

3

Öffnen Sie den Ordner Dockerfile unter elasticsearch und aktualisieren Sie "network.Host = 0.0.0.0" mit "network.Host = 127.0.0.1" . Starten Sie dann den Container erneut. Überprüfen Sie Ihre Verbindung mit curl.

$ curl http://docker-machine-ip:9200
{
  "name" : "vI6Zq_D",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hhyB_Wa4QwSX6zZd1F894Q",
  "version" : {
    "number" : "5.2.0",
    "build_hash" : "24e05b9",
    "build_date" : "2017-01-24T19:52:35.800Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.0"
  },
  "tagline" : "You Know, for Search"
}
2
javasenior

Bearbeiten Sie elasticsearch.yml und fügen Sie die folgende Zeile hinzu

http.Host: 0.0.0.0

network.Host: 0.0.0.0 hat nicht funktioniert

2
Mike

In diesem Fall müssen Sie zunächst die Java-Version mit dem folgenden Befehl überprüfen:

Java -version

nachdem Sie diesen Befehl ausgeführt haben, erhalten Sie Folgendes: 

Java-Version "1.7.0_51" OpenJDK-Laufzeitumgebung (rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64-Bit Server VM (Build 24.51-b03, gemischter Modus)

dann benutze diesen Befehl:

update-alternatives --config Java

und wählen Sie die untenstehende Version

* + 1 /usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/Java 2 /usr/Java/jdk1.8.0_73/jre/bin/Java

Geben Sie ein, um die aktuelle Auswahl beizubehalten [+], oder geben Sie die Auswahlnummer ein: 2

curl -XGET http://127.0.0.1:9200
1
saurabh cse

Meine 2 Cent

Ich habe gerade die Installationsprozedur auf Digital Ocean befolgt, anscheinend ist das Paket, das in den Repos verfügbar ist, nicht auf dem neuesten Stand. Ich habe alles gelöscht und die Installationsprozedur direkt von Elastic Search befolgt und alles funktioniert jetzt ein localhost, der auf 9200 verweist. Dasselbe Problem/Problem, das bei Kibana gefunden wurde, war die Lösung für mich auch, alles zu entfernen und einfach die Prozedur zu befolgen.

en

1
ximbal

Ändern Sie network.bind in 0.0.0.0 und http: port in 9200. Die Bindungsadresse 0.0.0.0 bezieht sich auf alle IPv4-Adressen auf dem lokalen Computer. Wenn ein Host über zwei IP-Adressen verfügt, 192.168.1.1 und 10.1.2.1, und ein Server, der auf dem Host ausgeführt wird, auf 0.0.0.0 wartet, ist er unter beiden IPs erreichbar.

0
Siddu

Das Deaktivieren von SELinux hat für mich funktioniert, obwohl ich es nicht vorschlagen kann - ich habe das nur für einen PoC gemacht

0
Adhitya Ganesan

Aktualisieren Sie Ihre jdk auf die neueste Mindestversion für Ihre Elasticsearch.

0
Zhu Xiaohu

Mein Problem war, dass ich nicht mit localhost arbeiten konnte. Ich musste es auf die IP-Adresse von localhost setzen

network.bind_Host: 127.0.0.1

0
Mahdi Younesi

Vergewissern Sie sich, dass Port 9200 für meinen Fall offen ist, da es sich um eine Amazon-Instanz handelt. Wenn ich ihn in meiner Sicherheitsgruppe öffne, funktionierte der curl-Befehl.

0
Buhiire Keneth

Vergessen Sie nicht, dass nach einer apt-Installation ein vollständiger Neustart erforderlich ist.

0
Altus

Um das hinzuzufügen, bin ich über Google auf viele Dokumente gestoßen, die sagten, network.Host auf localhost zu setzen.

Dadurch hat mir die berüchtigte Verbindung abgelehnt. Sie müssen eine IP-Adresse (127.0.0.1) und keinen FQDN verwenden.

Jeff

0
J.F.Gratton