मैं Elasticsearch 2.0 में रिमोट एक्सेस / अनुरोध को कैसे सक्षम करूं?


96

V2.0 से शुरू होकर एलीस्टेसर्च केवल डिफ़ॉल्ट रूप से लोकलहोस्ट पर सुन रहा है, लेकिन मैं स्थानीयहोस्ट के बाहर अनुरोध करना चाहता हूं।

उदाहरण के लिए, इस तरह के एक अनुरोध की अनुमति है:

http://localhost:9200/

लेकिन यह नहीं है:

http://server_name:9200/ (सर्वर के बाहर से, उदाहरण के लिए: एक ही लैन में एक स्थानीय कंप्यूटर)।

आपकी सहायता के लिए धन्यवाद।


6
यह वह उत्तर है जिसकी आप तलाश कर रहे हैं: stackoverflow.com/questions/33412549/…
Val

धन्यवाद! मुझे ठीक इसी की तलाश थी!
अब्राहम डुरान

जवाबों:


152

में config/elasticsearch.ymlडाल

network.host: 0.0.0.0

3
network.host: 0.0.0.0 सभी स्थानीय नेटवर्क को इस नोड तक पहुंचने की अनुमति देता है। मुझे लगता है कि उत्पादन मोड के लिए यह अनुशंसित नहीं है।
इसन्गो

1
इसका मतलब है कि सभी आईपी पते की अनुमति है। सुरक्षित नहीं है!
यवुज

1
मेरे CentOS सिस्टम पर फ़ाइल /etc/elasticsearch/elasticsearch.ymlऔर सामग्री मिली :network.host: ["0.0.0.0"]
AlikElzin-kilaka

मेरे लिए काम नहीं करता है। ES अभी भी 127.0.0.1 पर चल रहा हैT_T
E.Big

उन लोगों के लिए जो विंडोज पर कॉन्फिग फाइल नहीं खोज सकते, कृपया C:\ProgramData\Elastic\Elasticsearch\configलोकेशन चेक करें । यदि आप प्रोग्रामेटिक रूप से एलिस्टिक्स खोज से कनेक्ट करना चाहते हैं, तो आपको फ़ाइल transport.host: 0.0.0.0में सेट करना पड़ सकता है elasticsearch.yml
kojot

58

डिफ़ॉल्ट रूप से http परिवहन और आंतरिक इलास्टिक्स खोज परिवहन केवल लोकलहोस्ट को सुनता है। आप स्थानीय होस्ट के अलावा अन्य मेजबान से पहुँच Elasticsearch करना चाहते हैं तो में निम्न कॉन्फ़िगरेशन जोड़ने का प्रयास करें config / elasticsearch.yml

transport.host: localhost 
transport.tcp.port: 9300 
http.port: 9200
network.host: 0.0.0.0

यहां, 0.0.0.0 के रूप में network.host नेटवर्क के भीतर किसी भी होस्ट से एक्सेस की अनुमति देता है।


2
मुझे उन सभी मूल्यों को स्पष्ट रूप से सेट करना था, जो वर्चुअलबॉक्स होस्ट मशीन गो गेस्ट से कनेक्ट करने में सक्षम हैं। आपका बहुत बहुत धन्यवाद!
टॉम

Elasticsearch 7.1.0 पर परीक्षण किया गया - समाधान VirtualBox पर ES से जुड़ने के लिए ठीक काम करता है।
डीबी प्रसाद

ऊपर दिया गया कॉन्फ़िगरेशन भी लोचदार खोज संस्करण 7.2.0 :-)
डाइनू 0101

2
लगभग हर महीने मैं इस कॉन्फ़िगरेशन को कॉपी करने के लिए यहां आता हूं: डी
नीलेश

धन्यवाद इसने मुझे एक टन की मदद की। मैं एक कनेक्शन अपवाद मुद्दे से जूझ रहा था; और अंत में इसे elasticsearch.ymlफाइल में इन पंक्तियों को जोड़ने के बाद काम करना शुरू कर दिया
स्पेंसर ट्रिनह

19

विन्यास फ़ोल्डर के अंदर elasticsearch.json के लिए elasticsearch.yml फ़ाइल का नाम बदलें और जोड़ें:

{
    "network" : {
        "host" : "10.0.0.4"
    }
}

एक अन्य विकल्प यह है कि सेटिंग को बाहरी रूप से या तो ES_JAVA_OPTS का उपयोग किया जाए या उदाहरण के लिए इलास्टिसर्च कमांड के मापदंडों के रूप में:

$ elasticsearch -Des.network.host=10.0.0.4

एक अन्य विकल्प es.default सेट करना है। es के बजाय उपसर्ग। उपसर्ग, जिसका अर्थ है कि डिफ़ॉल्ट सेटिंग का उपयोग केवल तभी किया जाएगा जब कॉन्फ़िगरेशन फ़ाइल में स्पष्ट रूप से सेट नहीं किया गया हो।

एक अन्य विकल्प ${...}कॉन्फ़िगरेशन फ़ाइल के भीतर संकेतन का उपयोग करना है जो पर्यावरण सेटिंग के लिए हल करेगा, उदाहरण के लिए:

{
    "network" : {
        "host" : "${ES_NET_HOST}"
    }
}

कॉन्फ़िगरेशन फ़ाइल का स्थान बाहरी रूप से सिस्टम गुण का उपयोग करके सेट किया जा सकता है:

$ elasticsearch -Des.config=/path/to/config/file

अधिक जानकारी के लिए, https://www.elastic.co/guide/en/elasticsearch/reference/1.4/setup-configuration.html देखें


समझे: थ्रेड में अपवाद "मुख्य" BindTransportException [को बांधने में विफल [9300-9400]]; नेस्टेड: ChannelException [बंधने में विफल: / 10.0.0.4:9400]
माउंटेन

2
यह कैसे किया जा सकता है, मेरा मतलब है, हम सिर्फ नाम नहीं बदल सकते elasticsearch.ymlकरने के लिए elasticsearch.jsonक्योंकि पहले एक, हममम, YAML और दूसरा एक है JSON??
शुभम ए

9

जैसा कि @arsent ने config फाइल में उस आईपी पते को जोड़ा है:

sudo nano /etc/elasticsearch/elasticsearch.yml

जे ने एक महत्वपूर्ण बिंदु भी जोड़ा - यदि आप फ़ायरवॉल का उपयोग कर रहे हैं, तो उस पोर्ट पर यातायात की अनुमति देने वाला नियम जोड़ना याद रखें।

यदि आप एक मास्टर सर्वर को http से अधिक ईएस तक पहुंचने की अनुमति देना चाहते हैं, तो एक नियम जोड़ें जो केवल उस विशेष पते से एक्सेस की अनुमति देता है। उदाहरण के लिए, मान लें कि आप ufw का उपयोग कर रहे हैं, फिर अपने पोर्ट को जोड़ने के लिए इस कमांड को चलाएं:

sudo ufw allow from xxx.xxx.xxx.xxx to any port zzzz

अपने मास्टर सर्वर आईपी पते के साथ xxx.xxx.xxx.xxx बदलें और आपके द्वारा कॉन्फ़िगर किए गए पोर्ट के साथ zzzz config/elasticsearch.yml

यह कस्टम पोर्ट का उपयोग करने और डिफ़ॉल्ट 9200 न रखने की सिफारिश की गई है

इसका परीक्षण करने के लिए, अपने मास्टर सर्वर में एसएसएच और सही पोर्ट के साथ ईएस आईपी को पिंग करें ताकि आपको प्रतिक्रिया मिल सके:

curl -X GET 'http://xxx.xxx.xxx.xxx:zzzz'

आप यह भी सत्यापित कर सकते हैं कि ES अपने ब्राउज़र के साथ प्रयास करके अन्य IP से अप्राप्य है।

नहीं है एक उत्कृष्ट लेख है कि पता चलता है कि कैसे ऊपर ES Ubuntu पर DigitalOcean पर स्थापित करने के लिए


7

/Etc/elasticsearch/elasticsearch.yml में निम्न मान सेट करें:

network.host: [ localhost, _site_ ]

यह विकल्प आपको स्थानीय नेटवर्क (192.168.XX) पर लोकलहोस्ट और सभी कंप्यूटरों से एक्सेस करने की अनुमति देता है, लेकिन बाहर से नहीं।
इसके बारे में अधिक पढ़ें और अन्य विकल्प प्रलेखन पढ़ें


7

दूरस्थ मशीन में जहाँ इलास्टिक्सर्च स्थापित है, बस नीचे दो विन्यास जोड़ें /etc/elasticsearch/elasticsearch.yml

network.host: xx.xx.xx.xx #remote elastic machine's internal IP
discovery.type: single-node

रिमोट मशीन के रूप में इलास्टिसर्च 6.8.3 और एडब्ल्यूएस ईसी 2 लिनक्स एएमआई पर परीक्षण किया गया



2

लोकलहोस्ट को दो स्थानों में 0.0.0.0 से बदलें ।

  1. गोटो /etc/elasticsearch/elasticsearch.ymlNetwork.host में मूल्य देखें और इसे 0.0.0.0 में बदलें

  2. यह कदम है अगर आप किबाना का उपयोग कर रहे हैं। गोटो /etc/kibana/kibana.ymlServer.host में मान खोजें और इसे 0.0.0.0 में बदलें

अब आप आईपी पते और होस्ट के साथ दूरस्थ रूप से पहुंच प्राप्त करते हैं।


निम्नलिखित आदेशों को जोड़ना महत्वपूर्ण है: ufw को 9200 और ufw को 5601 की अनुमति दें
जोस टी।

1

@ के रूप में config/elasticsearch.ymlडाल में , network.host: 0.0.0.0ने कहा। और अपने ElasticSearch पोर्ट (9200 ByDefault) के लिए फ़ायरवॉल में इनबाउंड नियम भी जोड़ें।

इसने ElasticSearch संस्करण 2.3.0 में काम किया


1

के लिए ElasticSearch 7.8 और ऊपर

जांचें कि क्या आप सिंगल नोड पर हैं। निम्नलिखित पंक्ति जोड़ें

cluster.initial_master_nodes: node-1

किसी अन्य कंप्यूटर या एप्लिकेशन से एलीस्टेकर्च सर्वर तक पहुंचने के लिए, नोड के निम्नलिखित परिवर्तन करें C:\ProgramData\Elastic\Elasticsearch\config\elasticsearch.yml file:

निम्नलिखित पंक्तियों को जोड़ें

network.host: ["0.0.0.0", 127.0.0.1", "[::1]"]
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
http.host: 0.0.0.0

कुछ समय के लिए आपको CORS सक्षम करना पड़ सकता है

http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length

यहाँ मेरी पूर्ण yml फ़ाइल है

bootstrap.memory_lock: false
cluster.name: elasticsearch
http.port: 9200
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
cluster.initial_master_nodes: node-1
node.name: ITDEV
path.data: C:\ProgramData\Elastic\Elasticsearch\data
path.logs: C:\ProgramData\Elastic\Elasticsearch\logs
transport.tcp.port: 9300
xpack.license.self_generated.type: basic
xpack.security.enabled: false
network.host: ["0.0.0.0", 127.0.0.1", "[::1]"]
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
http.host: 0.0.0.0
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length

आश्चर्यजनक रूप से यह मेरे लिए काम नहीं किया
एंडी ड्यूफ्रेसने

0

सेटिंग के अलावा network.host : 0.0.0.0

निम्नलिखित परम को सेट करने की आवश्यकता हो सकती है

node.name: elasticsearch-node-1

cluster.initial_master_nodes: ["elasticsearch-node-1"]

सभी सेटिंग में जाते हैं elasticsearch/elasticsearch.yml

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