Lorsque j'ai essayé de me connecter à Elastic Search à l'aide du fichier curl http://localhost:9200
, cela fonctionne bien.
Mais lorsque je lance le curl http://IpAddress:9200
, une erreur est générée en indiquant connection refused port 9200
.
Comment résoudre cette erreur?
Par défaut, il devrait être lié à toutes les adresses locales. Donc, en supposant que vous n'ayez pas de problème de couche réseau avec les pare-feu, le seul paramètre ES que je puisse vérifier est network.bind_Host
et assurez-vous qu'il n'est pas défini ou qu'il est défini sur 0.0.0.0
ou ::0
ou à l'adresse IP correcte de votre réseau .
Mise à jour: par commentaires dans ES 2.3, vous devez définir network.Host
à la place.
Éditez /etc/elasticsearch/elasticsearch.yml
Cela "désactivera" ce paramètre et autorisera les connexions à partir d'autres IP.
Tout essayé sur cette page, et seules les instructions de ici aidé.
dans /etc/default/elasticsearch
, assurez-vous qu'ils ne sont pas commentés:
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
assurez-vous que /var/lib/elasticsearch
est la propriété de l'utilisateur elasticsearch:
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
Dans mon cas, elasticsearch a été lancé . Mais il me restait
curl: (7) Failed to connect to localhost port 9200: Connection refused
La commande suivante a échoué
Sudo service elasticsearch restart
Pour que cela fonctionne, je devais courir à la place
Sudo systemctl restart elasticsearch
Ensuite, tout s'est bien passé.
Aucune des solutions proposées ici ne fonctionnait pour moi, mais ce qui a finalement fonctionné, c’est d’ajouter ce qui suit à elasticsearch.yml
network:
Host: 0.0.0.0
http:
port: 9200
Après cela, j'ai redémarré le service et je peux maintenant curl
à la fois depuis la VM et en externe. Pour une raison étrange, j'ai dû essayer différentes variantes d'un appel curl
inside the VM avant que cela fonctionne:
curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200
Note: J'utilise Elasticsearch 5.5 sur Ubuntu 14.04
Pourquoi ne commencez-vous pas avec cette ligne de commande:
$ Sudo service elasticsearch status
Je l'ai fait et j'ai:
"There is insufficient memory for the Java Runtime..."
Puis j'ai édité le fichier /etc/elasticsearch/jvm.options
:
...
################################################################
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
#-Xms2g
#-Xms2g
-Xms512m
-Xmx512m
################################################################
...
Cela a fonctionné comme un charme.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
assurez-vous que le serveur est démarré. J'ai vu ce problème quand ma machine virtuelle était trop petite RAM et que je ne pouvais pas démarrer.
Sudo systemctl status elasticsearch
ce qui précède vous montrera si es est effectivement en cours d'exécution.
Pour ce problème, je devais utiliser: Sudo /usr/share/elasticsearch/bin/elasticsearch start
pour pouvoir obtenir quelque chose sur les ports 9200/9300 (Sudo netstat -ntlp) et une réponse à:
curl -XGET http://localhost:9200
J'ai eu le même problème en refusant les connexions sur le port 9200 . Vérifiez le statut du service elasticsearch avec la commande Sudo service elasticsearch status
. Si cela présente une erreur et que vous lisez tout ce qui a trait à Java, le problème vient probablement de votre mémoire jvm. Vous pouvez le modifier dans /etc/elasticsearch/jvm.options
. Pour une machine de mémoire RAM de 1 Go sous environnement Amazon, j'ai conservé ma configuration sous:
-Xms128m
-Xmx128m
Après avoir défini cela et redémarré le service elasticsearch, cela a fonctionné à merveille. Les vérifications Nmap et UFW (si vous utilisez un pare-feu local) devraient également être utiles.
Ouvrez votre dossier Dockerfile sous elasticsearch et mettez à jour "network.Host = 0.0.0.0" avec "network.Host = 127.0.0.1" . Puis redémarrez le conteneur. Vérifiez votre connexion avec 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"
}
Editez elasticsearch.yml
et ajoutez la ligne suivante
http.Host: 0.0.0.0
network.Host: 0.0.0.0
n'a pas fonctionné
Dans ce cas, vous devez d’abord vérifier la version de Java en utilisant la commande ci-dessous:
Java -version
après avoir exécuté cette commande, vous obtenez quelque chose comme ceci:
Version Java "1.7.0_51" Environnement d'exécution OpenJDK (rhel-2.4.5.5.el7-x86_64 u51-b31) Serveur OpenJDK 64 bits VM (version 24.51-b03, mode mixte)
puis utilisez cette commande:
update-alternatives --config Java
et sélectionnez la version ci-dessous
* + 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
Entrez pour conserver la sélection actuelle [+] ou tapez le numéro de sélection: 2
curl -XGET http://127.0.0.1:9200
Mes 2 centimes,
Je viens de suivre la procédure d'installation sur Digital Ocean, apparemment le paquet disponible dans le dépôt n'est pas à jour, j'ai tout supprimé et suivi la procédure d'installation directement à partir de Elastic Search et tout fonctionne à présent, le comportement clé en main est activé un localhost pointant vers 9200. Même chose/problème trouvé avec Kibana, la solution pour moi était aussi de tout supprimer et de suivre leur procédure, espérons que cela économise deux heures à quelqu'un (le temps que j'ai passé à comprendre comment installer ELK!)
en
Modifiez network.bind en 0.0.0.0 et http: port en 9200. L'adresse de liaison 0.0.0.0 désigne toutes les adresses IPv4 sur l'ordinateur local. Si un hôte a deux adresses IP, 192.168.1.1 et 10.1.2.1, et qu'un serveur fonctionnant sur l'hôte écoute 0.0.0.0, il sera accessible à ces deux adresses IP.
Désactiver SELinux a fonctionné pour moi, bien que je ne le suggère pas - je ne l'ai fait que pour un PoC
Mettez à jour votre jdk vers la dernière version minimale pour votre recherche elasticsearch.
Mon problème était que je ne pouvais pas travailler avec localhost
je devais le configurer à l'adresse IP de localhost
network.bind_Host: 127.0.0.1
Assurez-vous que le port 9200
est ouvert dans mon cas. Il s’agissait d’une instance Amazon. Lorsque je l’ai ouvert dans mon groupe de sécurité, la commande curl fonctionnait.
Après avoir utilisé certaines des réponses ci-dessus, n'oubliez pas qu'après une installation d'apt, un redémarrage total peut être nécessaire.
Pour ajouter quelque chose à ce sujet, j'ai rencontré de nombreux documents via Google qui disaient de configurer network.Host to localhost.
Cela m'a donné la fameuse connexion refusée. Vous devez utiliser une adresse IP (127.0.0.1) et non un nom de domaine complet.
Jeff