J'ai utilisé elasticsearch comme moteur de recherche pour mon application Rails, mais il a cessé de fonctionner correctement pour une raison que je ne comprends pas. Lorsque je fais une demande de bouclage au serveur elasticsearch, j'obtiens Erreur 503.
curl -XGET http://localhost:9200
{
"ok" : true,
"status" : 503,
"name" : "Killpower",
"version" : {
"number" : "0.90.3",
"build_hash" : "5c38d6076448b899d758f29443329571e2522410",
"build_timestamp" : "2013-08-06T13:18:31Z",
"build_snapshot" : false,
"lucene_version" : "4.4"
},
"tagline" : "You Know, for Search"
}
J'ai essayé de résoudre le problème avec le rechargement du service elasticsearch et l'installation d'une nouvelle version sans succès.
Voici ce que j'ai trouvé dans les journaux
[2013-09-03 12:31:45,320][INFO ][node ] [Killpower] version[0.90.3],
pid[4222], build[5c38d60/2013-08-06T13:18:31Z]
[2013-09-03 12:31:45,321][INFO ][node ] [Killpower] initializing ...
[2013-09-03 12:31:45,327][INFO ][plugins ] [Killpower] loaded [], sites []
[2013-09-03 12:31:47,248][INFO ][node ] [Killpower] initialized
[2013-09-03 12:31:47,248][INFO ][node ] [Killpower] starting ...
[2013-09-03 12:31:47,313][INFO ][transport ] [Killpower] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/172.20.46.32:9300]}
[2013-09-03 12:31:51,443][INFO ][discovery.zen ] [Killpower] master_left [[Amphibion][IMB4uACSTyOx3MO2u-FsWg][inet[/fe80:0:0:0:52e5:49ff:fec2:9718%2:9300]]], reason [do not exists on master, act as master failure]
[2013-09-03 12:31:51,446][INFO ][discovery ] [Killpower] elasticsearch/iavpGrMtRHmWLHMTNpscGQ
[2013-09-03 12:31:51,483][INFO ][http ] [Killpower] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/172.20.46.32:9200]}
[2013-09-03 12:31:51,484][INFO ][node ] [Killpower] started
[2013-09-03 12:31:54,712][WARN ][transport.netty ] [Killpower] exception caught on transport layer [[id: 0xa929f24d, /127.0.0.1:50456 => /127.0.0.1:9300]], closing connection
Après cela suit également un long Java stacktrace. Comment puis-je résoudre le problème?
Il pourrait y avoir une autre instance dans votre réseau local avec le serveur elasticsearch opérationnel. Étant donné que les fragments dans elasticsearch fonctionnent à partir de la boîte et sont activés par défaut, il pourrait y avoir un conflit de nœud maître. Veuillez consulter votre fichier elasticsearch.log. S'il y a quelque chose comme
{"error":"MasterNotDiscoveredException[waited for [30s]]","status":503}
Vous devriez aller dans votre fichier de configuration /etc/elasticsearch/elasticsearch.yml
et ajoutez cette ligne:
discovery.zen.ping.multicast.enabled: false
vérifier en outre la valeur de
discovery.zen.ping.unicast.hosts
car il faut découvrir des nœuds élastiques