2015-11-13 37 views
41

從v2.0開始Elasticsearch默認只在localhost上偵聽,但我想在localhost之外發出請求。如何在Elasticsearch 2.0中啓用遠程訪問/請求?

例如,像這樣的請求被允許:

http://localhost:9200/

但這不是:

http://server_name:9200/(從服務器,例如以外:在同一個局域網的本地計算機) 。

感謝您的幫助。

+5

這是你正在尋找的答案:http://stackoverflow.com/questions/33412549/how-to-bind-elasticsearch-2-0-on-both-loopback-and-non-loopback-interfaces/33438638#33438638 – Val

+0

謝謝!這正是我所期待的! –

+0

[如何在Loopback和Non-Loopback接口上綁定Elasticsearch 2.0?](https://stackoverflow.com/questions/33412549/how-to-bind-elasticsearch-2-0-on-both-loopback) - 非 - 回送接口) – eckes

回答

80

config/elasticsearch.yml

network.host: 0.0.0.0 
+1

工作,謝謝 –

+0

它的工作原理,但爲什麼? – pmbanka

+1

network.host:0.0.0.0允許所有本地網絡訪問此節點。我不推薦這種生產模式。 – Isengo

17

重命名elasticsearch.yml文件elasticsearch.json config文件夾內,並添加:

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

另一種選擇是提供外部的設置或者使用ES_JAVA_OPTS或作爲參數傳遞給elasticsearch命令,例如:

$ 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

+0

得到:線程「main」中的異常BindTransportException [無法綁定到[9300-9400]];嵌套︰ChannelException [無法綁定到:/10.0.0.4:9400] – mountrix

+0

這怎麼可以這樣做,我的意思是,我們不能只是重命名'elasticsearch.yml'到'elasticsearch.json',因爲第一個,嗯,YAML第二個是'JSON'? –

0

在配置/ elasticsearch.yml,把network.host:0.0.0.0作爲@arsent說。 並且還在ElasticSearch端口的防火牆中添加入站規則(9200 ByDefault)。 它曾在ElasticSearch版本2.3.0

11

默認情況下,HTTP傳輸和內部elasticsearch運輸只聽本地主機。 如果您想從本地主機以外的主機訪問Elasticsearch,請嘗試在config/elasticsearch.yml中添加以下配置。

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

在這裏,network.host爲0.0.0.0允許從網絡內的任何主機訪問。

+0

它適用於我:)謝謝 –

+0

我不得不明確地設置所有這些值能夠從VirtualBox主機連接到彈性客戶端。非常感謝你! – Tom