Ich habe den ElasticSearch-Server installiert, auf dem ich laufe:
%Vor%Wie kann ich den Java-Client für die Verbindung mit diesem Server konfigurieren? Ich habe nur:
%Vor%Aber nach dem Versuch, eine Verbindung herzustellen, empfange ich:
%Vor%Wenn ich den Java-Client wie folgt konfiguriere:
%Vor%Ich erhalte folgende Protokolle:
%Vor%Wie ich verstanden habe, bedeutet dies, dass dieser neue Knoten (der Client-Knoten sein soll) sich selbst zu einem neuen Master-Knoten gemacht hat. Und ich logge nicht davon, dass es gefunden wurde und verbinde mich mit irgendeinem anderen Knoten.
Server und Client werden auf demselben Computer gestartet. 192.168.1.106:9200 sind vom Browser zugänglich.
Und ich kann keine gute Dokumentation über die Discovery-Konfiguration finden. Wo kann ich mehr über ElasticSearch-Konfigurationen lesen? Und wie konfiguriert man den Java-Client?
Es gab dasselbe Problem, bei dem die Knoten beim Neustart des Knotens keinen Master auswählen konnten.
Das Problem liegt in der Kommunikation von Knoten untereinander.
Bitte stellen Sie in Ihren elastischen Suchprotokollen sicher, ob beim Neustart des Knotens
steht %Vor% Dies bedeutet, dass der aktuelle Knoten seine IP-Adresse nicht an andere Knoten publiziert und daher die Knoten diesen Knoten nicht erkennen, obwohl die Knoten-IP möglicherweise in discovery.zen.ping.unicast.hosts
Lösung Nehmen Sie die folgenden Änderungen in elasticsearch.yml vor. Fügen Sie
hinzu %Vor%Dies bedeutet, dass Ihr Knoten jetzt erkennbar ist. Der zweite Schritt, um den Cluster auffindbar zu machen, besteht darin, die IP-Adresse des Knotens in den Unicast-Host-Listen aller Master-Knoten hinzuzufügen, sodass der Knoten bei jedem neuen Master für den neuen Master erkennbar ist. p> %Vor%
Der wahrscheinlichste Grund für diesen Fehler ist eine Firewall auf Ihrem Computer, die den Multicast-Erkennungsdatenverkehr auf Port 54328 blockiert. Sowohl der Client als auch der Master senden während der ersten Erkennung auf diesem Port und hören nicht voneinander. Wenn Sie daher node.client = true angeben, kann der Client-Knoten (der kein Master sein kann) mit MasterNotDiscoveredException fehlschlagen, und der Knoten ohne Daten wählt sich selbst als Master aus.
Ich stieß auf das gleiche Problem und durch die Verwendung von IP-Nummern in der Konfigurationsdatei löste es für mich.
in /config/elasticsearch.yml
Entfernen Sie die Kommentarzeichen und ändern Sie die Einstellung network.host zu:
%Vor%Sie können dies auch in ifconfig in Ihre Maschinen-IP-Nummer ändern.
Ich hatte das gleiche Problem. Schließlich stellte sich heraus, dass ich ein Firewall-Problem hatte, bei dem meine Firewall (auf Ubuntu) die Ports von ElasticSearch blockierte. Ich benutze die Standardfirewall auf Ubuntu, ufw .
Also, um die Ports zu öffnen, habe ich diese Befehle auf dem Terminal ausgeführt:
%Vor%Mein Cluster wird lokal auf 9200 ausgeführt und alle meine Clients öffnen auf 9300+. Also habe ich gerade den Bereich 9200-9400 für sie geöffnet. 54328 ist für die Multicast-Übertragung.
Nur zur Vollständigkeit: Ich habe auch den TransportClient verwendet, der funktioniert, aber ich habe meinen localhost fest an die Adresse angehängt, an der der TransportClient arbeiten wird. Keine gute Sache für den Produktionscode :-)
So etwas sollte funktionieren:
%Vor%Was mich beschmutzt hat, war, dass ich ursprünglich versucht habe, den Client mit 9200 zu verbinden, nicht mit 9300. Hinweise zu den obigen Einstellungen finden Sie unter Ссылка
Tags und Links java elasticsearch lucene