एलिटिक्स खोज: लोकलहोस्ट पोर्ट 9200 से कनेक्ट करने में विफल - कनेक्शन ने इनकार कर दिया


110

जब मैंने curl http://localhost:9200इसे ठीक काम कर रहा है , तो एलिटिक्स खोज से जुड़ने की कोशिश की ।

लेकिन जब मैं curl http://IpAddress:9200इसे चलाता हूं तो यह कहते हुए एक त्रुटि होती है

लोकलहोस्ट पोर्ट 9200 से कनेक्ट करने में विफल: कनेक्शन ने इनकार कर दिया

इस त्रुटि को कैसे हल करें?


यदि आप पहले से network.host: localhost को elasticsearch.yml फ़ाइल में सेट करते हैं तो आप अनुरोध में http प्रोटोकॉल जोड़ने का प्रयास कर सकते हैं:curl -X GET "http://localhost:9200"
Xxx Xxx

कम से कम विंडोज 10 पर एलीस्टैचर्च 7.8.0 का उपयोग करते हुए, मेरे लिए एलास्टिसर्चर्च.लाइम फ़ाइल में नेटवर्क को अनचेक करना।
DLyons

जवाबों:


81

डिफ़ॉल्ट रूप से इसे सभी स्थानीय पते पर बाँध देना चाहिए। इसलिए, जब आप यह सोचते हैं फायरवॉल के साथ एक नेटवर्क परत मुद्दा नहीं है, केवल की स्थापना मैं चेक करने के लिए सोच सकते हैं ते है network.bind_hostऔर यह सुनिश्चित करें है यह या तो सेट नहीं या करने के लिए सेट किया गया है 0.0.0.0या ::0करने या अपने नेटवर्क के लिए सही आईपी पते को।

अपडेट: ES 2.3 में प्रति टिप्पणी के network.hostबजाय आपको सेट करना चाहिए ।


11
मुझे स्पष्ट रूप से network.bind_hostमूल्य निर्धारित करना था, इसे छोड़ना मेरी समस्या थी।
जो

कैसे स्पष्ट रूप से विंडोज़ में network.bind_host सेट करने के लिए?
रिजवान पटेल

क्या आप सुनिश्चित हैं कि यह सुरक्षित है? मुझे लगता है कि अधिकार केवल स्थानीय सर्वर से है।
लाइको

खैर, ज्यादातर मामलों में यह सुरक्षित है। लेकिन हाँ, यही कारण है कि "आपके नेटवर्क के लिए सही आईपी पते" का खंड है।
एंड्रयू व्हाइट

3
जैसा कि नीचे कहा गया है "network.bind_host" अब elasticsearch 2.3 के लिए "network.host" है
bkunzi01

78

/etc/elasticsearch/elasticsearch.ymlनिम्न पंक्ति संपादित करें और जोड़ें:

network.host: 0.0.0.0

यह इस पैरामीटर को "परेशान" करेगा और अन्य आईपी से कनेक्शन की अनुमति देगा।


1
यह मेरे लिए काम किया, धन्यवाद! हालाँकि, मेरे मैक पर, कॉन्फिग फाइल स्थित है /Applications/elasticsearch-2.1.1/config/elasticsearch.yml, और मुझे जो एडिट करना था network.host, वह नहीं था network.bind_host
ब्योर्न्टे

8
इलास्टिक्स खोज 2.2 में पैरामीटर को नेटवर्क कहा जाता है ।होस्ट
ओरल

यह /etc/elasticsearch/elasticsearch.yml फ़ाइल डॉक कंटेनर में होनी चाहिए?
आशीष करपे

2
यह मेरे लिए हल करता है, मैं इलास्टिक्स खोज का उपयोग कर रहा हूं। 6.0.0 डॉक कंटेनर के अंदर चल रहा है। विन्यास परिवर्तन के बाद, मैं अब तक पहुँच सकता हूँ curl http://172.17.0.2:9200। आप पहचान लेंगे कि आमतौर पर इस्तेमाल किया जाने वाला डॉक आईपी एड्रेसिंग है।
truthadjustr

1
network.host: 0.0.0.0 - मदद न करें, लेकिन यह अपवाद मुझे सेरेब्रो से मिल रहा है
Mindaugas K.

29

इस पृष्ठ पर सब कुछ करने की कोशिश की, और यहाँ से केवल निर्देशों ने मदद की।

में /etc/default/elasticsearch, इन अन-टिप्पणी की हैं सुनिश्चित करें:

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

सुनिश्चित करें कि /var/lib/elasticsearchelasticsearch उपयोगकर्ता के स्वामित्व में है:

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

1
एक ही समस्या थी और समाधान सिर्फ chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/और सिर्फ अप्रयुक्त थाSTART_DAEMON=true
एस्टेवेक्स

1
मेरे लिए, यह समाधान + sudo systemctl restart elasticsearchजैसा कि @Kalanit द्वारा उत्तर दिया गया है, ने इस समस्या को हल किया
कृपाण

1
यह एकमात्र समाधान है जिसने मुझे Ubuntu 16.04 पर मदद की।
स्नेहल

21

मेरे मामले में इलास्टिक्स खोज शुरू की गई थी। लेकिन फिर भी था

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

निम्न आदेश असफल था

sudo service elasticsearch restart

इसे काम करने के लिए, मुझे इसके बजाय भागना पड़ा

sudo systemctl restart elasticsearch

फिर सब ठीक हो गया।


1
मुझे जो मुद्दा मिला है वह बिल्कुल आपके साथ है, और आपका समाधान मेरे लिए काम करता है। आपका बहुत बहुत धन्यवाद!
shaosh

6
मुझे भी करना पड़ा sudo systemctl enable elasticsearch
अधिकतम प्लेनर

मुझे वही मुद्दा मिला, लेकिन समझ में नहीं आया कि systemctlकाम और सेवा क्यों नहीं करता है?
Luv33preet

@ Luv33preet systemctl systemd द्वारा संचालित है और एक पूरी तरह से अलग कार्यक्रम है
हैफ़

सेवा को फिर से शुरू करना मेरे लिए उबंटू में 16.04 और लोचदार खोज पर 1.74
रैसल 101

19

आप इस कमांड-लाइन से क्यों नहीं शुरू करते हैं:

$ sudo service elasticsearch status

मैंने इसे किया और प्राप्त किया:

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

फिर मैंने /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

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

...

इसने एकदम जादू की तरह काम किया।


यह 22 मार्च के उत्तर bu @ Jefferson.macedo जैसी ही जानकारी देता प्रतीत होता है। एक नया उत्तर केवल मौजूदा विवरणों को फिर से लिखना नहीं चाहिए, यह नई और उपयोगी जानकारी प्रदान करना चाहिए।
एड्रियनएचएच

17

यहां प्रस्तावित प्रस्तावों में से किसी ने भी मेरे लिए काम नहीं किया, लेकिन आखिरकार इसे जो काम मिला वह निम्नलिखित में जोड़ रहा है elasticsearch.yml

network:
  host: 0.0.0.0
http:
  port: 9200

उसके बाद, मैंने सेवा को फिर से शुरू किया और अब मैं curlइसे वीएम के भीतर और बाहरी रूप से दोनों से कर सकता हूं । किसी विषम कारण के लिए, मुझे काम करने से पहले वीएम के अंदरcurl कॉल के कुछ अलग-अलग वेरिएंट आज़माने होंगे :

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

नोट: मैं Ubuntu 14.04 पर Elasticsearch 5.5 का उपयोग कर रहा हूं


1
आप एक जीवन रक्षक है। यह एकमात्र ऐसी चीज है जो विभिन्न पदों के माध्यम से पढ़ने के बाद मेरे लिए काम करती है।
यू चेन

1
हां, बहुत मददगार यही एकमात्र चीज है जो मेरे लिए भी काम करती है!
osehgol

धन्यवाद, मैंने आपके समाधान की कोशिश की और यह काम कर गया। जो मुझे अजीब लगा, क्योंकि मुझे सिर्फ पोर्ट नंबर को अनकंफर्ट करना था। मैंने सोचा था कि टिप्पणी की गई लाइनें पूर्वनिर्धारित डिफ़ॉल्ट मानों की तरह थीं
zwep

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

सुनिश्चित करें कि सर्वर शुरू हो गया है। मैंने इस समस्या को तब देखा है जब मेरी वर्चुअल मशीन में बहुत अधिक रैम थी और es प्रारंभ नहीं हो सका।

sudo systemctl status elasticsearch

उपरोक्त आपको दिखाएगा कि क्या वास्तव में es चल रहा है।


4
की जाँच करें stackoverflow.com/questions/29447434/... इस समस्या को बाहर छँटाई मदद के लिए।
रयान मिलर

8

इस समस्या के लिए, मुझे इसका उपयोग करना था: sudo /usr/share/elasticsearch/bin/elasticsearch start

बंदरगाहों 9200/9300 (sudo netstat -ntlp) पर कुछ पाने के लिए और एक प्रतिक्रिया करने में सक्षम होने के लिए:

curl -XGET http://localhost:9200


1
धन्यवाद। यह ElasticSearch 1. ~ संस्करणों के लिए है।
मॉन्ट्रियलडेवोन

स्थिति की जाँच, त्रुटि संदेश में मदद नहीं करता है। केवल बिन फ़ाइल को मैन्युअल रूप से चलाते समय यह सही त्रुटि संदेश दे रहा है।
सुलेमान सुदीरमन

6

elasticsearch.ymlनिम्नलिखित पंक्ति को संपादित करें और जोड़ें

http.host: 0.0.0.0

network.host: 0.0.0.0 के लिए काम नहीं किया


3

अपने खोलें Dockerfile तहत elasticsearch फ़ोल्डर और अद्यतन "network.host = 0.0.0.0" के साथ "network.host = 127.0.0.1" । फिर कंटेनर को पुनरारंभ करें। कर्ल के साथ अपना कनेक्शन जांचें।

$ 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"
}

3

मुझे 9200 पोर्ट पर कनेक्शन से इनकार करने में एक ही समस्या थी। कमांड के साथ elasticsearch सेवा की स्थिति की जाँच करें sudo service elasticsearch status। यदि यह एक त्रुटि प्रस्तुत कर रहा है और आप जावा से संबंधित कुछ भी पढ़ते हैं, तो समस्या आपकी jvm मेमोरी है। आप इसमें संपादित कर सकते हैं /etc/elasticsearch/jvm.options। अमेज़न वातावरण पर 1 जीबी रैम मेमोरी मशीन के लिए, मैंने अपना कॉन्फ़िगरेशन ऑन रखा:

-Xms128m
-Xmx128m

इसे स्थापित करने और इलास्टिक्स खोज सेवा को पुनरारंभ करने के बाद, इसने एक आकर्षण की तरह काम किया। Nmap और UFW (यदि आप स्थानीय फ़ायरवॉल का उपयोग करते हैं) जाँच भी उपयोगी होनी चाहिए।


1
मेरे लिए यही किया। मेरे कॉन्फ़िगरेशन में दोनों के लिए 1g था, और AWS उदाहरण (t2.micro) इसे बहुत अधिक मेमोरी आवंटित नहीं कर सका। प्रारंभ और पुनरारंभ आदेश चुपचाप विफल रहे, लेकिन स्थिति कमांड ने त्रुटि को विस्तृत कर दिया।
ग्रेग चार्ल्स

2

मैंने एक ऐसे ही मुद्दे का अनुभव किया।

यहां मैंने इसे हल किया है

ElasticSearch शुरू करने के लिए नीचे दिया गया सेवा कमांड चलाएँ

sudo service elasticsearch start

या

sudo systemctl start elasticsearch

यदि आप अभी भी त्रुटि प्राप्त करते हैं

कर्ल: (7) लोकलहोस्ट पोर्ट 9200 से कनेक्ट करने में विफल: कनेक्शन ने इनकार कर दिया

ElasticSearch की स्थिति की जाँच करने के लिए नीचे दिया गया सेवा कमांड चलाएँ

sudo service elasticsearch status

या

sudo systemctl status elasticsearch

यदि आपको नीचे की तरह प्रतिक्रिया ( एक्टिव: एक्टिव (रनिंग) ) मिलती है तो आप एलिस्टैसर्च सक्रिय है और चल रहा है

● elasticsearch.service - Elasticsearch भरा हुआ: लोड (/us/lib/systemd/system/elasticsearch.service; अक्षम; विक्रेता पूर्व निर्धारित: सक्षम) सक्रिय: सक्रिय (चल रहा है) Sat 2019-09-09 11:22:21 वाट के बाद से 3 स पहले

फिर आप यह जांच कर सकते हैं कि नीचे दी गई कमांड का उपयोग करके स्थानीय एलिज़ाबेथ पर 9200 पोर्ट करने के लिए HTTP अनुरोध भेजकर आपकी इलास्टिक्स खोज नोड चल रही है:

curl http://localhost:9200

एल्स, यदि आपको कोई प्रतिक्रिया मिलती है, तो आपको इसे ठीक करने के लिए आगे डीबग करना पड़ सकता है, लेकिन नीचे दिए गए कमांड को चलाने से आपको यह पता लगाने में मदद मिलेगी कि कैटरेट शुरू से ही इलास्टिक खोज सेवा क्या है ।

sudo service elasticsearch status

या

sudo systemctl status elasticsearch

यदि आप ElasticSearch सेवा को रोकना चाहते हैं , तो बस नीचे दिए गए सेवा कमांड को चलाएं;

sudo service elasticsearch stop

या

sudo systemctl stop elasticsearch

N / B: आपको ElasticSearch सेवा की स्थिति बताने के लिए sudo service elasticsearch status या sudo systemctl status elasticsearch हर बार आपको त्रुटि का सामना करने के लिए कमांड चलाना पड़ सकता है ।

यह किबाना के लिए भी लागू होता है , कमांड को चलाएं sudo service kibana status या sudo systemctl status kibana हर बार जब आप त्रुटि का सामना करें, तो किबाना सेवा की स्थिति को बताने के लिए ।

बस इतना ही।

आशा है कि ये आपकी मदद करेगा।


1

इस स्थिति में, सबसे पहले आपको नीचे दिए गए कमांड का उपयोग करके जावा संस्करण की जांच करनी होगी:

java -version

इस कमांड को चलाने के बाद आपको कुछ इस तरह मिलता है:

जावा संस्करण "1.7.0_51" OpenJDK रनटाइम एनवायरनमेंट (rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64-बिट सर्वर VM (24.51-b03, मिश्रित मोड का निर्माण)

तब इस कमांड का उपयोग करें:

update-alternatives --config java

और नीचे दिए गए संस्करण का चयन करें

* + 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.5.5.5.5.5.5.el7.x86_64/jre/bin/java 2 /usr/java/jdk1.8.0_73/jre/bin/bin जावा

वर्तमान चयन [+], या चयन संख्या टाइप करने के लिए दर्ज करें: २

curl -XGET http://127.0.0.1:9200

1

मेरे 2 सेंट,

मैंने अभी डिजिटल महासागर पर स्थापित प्रक्रिया का पालन किया है, जाहिर है कि रिपॉज में उपलब्ध पैकेज आज तक नहीं है, मैंने सब कुछ हटा दिया है और एलास्टिक सर्च से डायरेक्ट इंस्टाल की गई प्रक्रिया का पालन किया है और अब सब कुछ काम कर रहा है, मूल रूप से आउट ऑफ द बॉक्स व्यवहार चालू है एक लोकलहोस्ट 9200 की ओर इशारा करते हुए। किबाना के साथ एक ही बात / मुद्दा मिला, मेरे लिए समाधान भी था, सबकुछ हटाने और उनकी प्रक्रिया का पालन करने के लिए, आशा है कि यह किसी को दो घंटे बचाता है (जिस समय मैंने ईआरके को सेटअप करने के तरीके का पता लगाया!)

en


1

अपनी इलास्टिक्स खोज के लिए अपने jdk को नवीनतम न्यूनतम संस्करण में अपडेट करें।


1

Network.bind को 0.0.0.0 और http: port को 9200 में बदलें। बाइंड एड्रेस 0.0.0.0 का अर्थ है स्थानीय मशीन पर सभी IPv4 पते। यदि किसी होस्ट के दो IP पते, 192.168.1.1 और 10.1.2.1 हैं, और होस्ट पर चलने वाला सर्वर 0.0.0.0 पर सुनता है, तो यह उन दोनों IP पर उपलब्ध होगा।


1

यदि आप कनेक्शन से इनकार करते हैं , तो त्रुटि से इनकार कर दिया , बस ElasticSearch सेवा की स्थिति की जांच करने के लिए नीचे कमांड चलाएं

sudo service elasticsearch status

यह आपको इलास्टिक खोज सेवा की स्थिति को समझने और इसके बारे में क्या करने में मदद करेगा।


1

7.5.0 और इसके बाद के संस्करण के लिए उपयोगी नहीं है।


0

ऊपर दिए गए कुछ उत्तरों का उपयोग करने के बाद, यह मत भूलो कि एक उपयुक्त इंस्टाल के बाद, कुल रिबूट क्रम में हो सकता है।


0

बस इस पर जोड़ने के लिए, मैं गूगल के माध्यम से कई डॉक्स में आया हूं जो कहा गया है कि नेटवर्कहोस्ट को लोकलहोस्ट पर सेट करें।

ऐसा करने से मुझे बदनाम कनेक्शन देने से मना कर दिया गया। आपको एक IP पते (127.0.0.1) का उपयोग करना चाहिए, न कि FQDN का।

जेफ


0

सुनिश्चित करें कि पोर्ट 9200मेरे मामले के लिए खुला है यह एक अमेज़ॅन उदाहरण था इसलिए जब मैंने इसे अपने सुरक्षा समूह में खोला तो कर्ल कमांड ने काम किया।


0

SELinux को निष्क्रिय करना मेरे लिए काम करता है, हालाँकि मैं इसका सुझाव नहीं देता - मैंने ऐसा सिर्फ एक PoC के लिए किया


0

मेरी समस्या यह थी कि मैं localhostस्थानीय होस्ट के आईपी पते पर इसे सेट करने की आवश्यकता के साथ काम नहीं कर सका

network.bind_host: 127.0.0.1


0

मेरे मामले में, समस्या जावा संस्करण के साथ है, मैंने open-jdk 11पहले स्थापित किया था। सेवा शुरू करते समय समस्या पैदा करना। मैंने इसे बदल दिया open-jdk 8और यह काम करने लगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.