Elasticsearch 2.0でリモートアクセス/リクエストを有効にするにはどうすればよいですか?


97

v2.0以降、Elasticsearchはデフォルトでローカルホストでのみリッスンしていますが、ローカルホストの外部でリクエストを行いたいと思います。

たとえば、次のようなリクエストが許可されます。

http://localhost:9200/

しかし、これはそうではありません:

http://server_name:9200/ (サーバーの外部から、たとえば:同じLAN内のローカルコンピューター)。

ご協力いただきありがとうございます。


6
これはあなたが探している答えです:stackoverflow.com/questions/33412549/…–
Val

ありがとう!それはまさに私が探していたものでした!
アブラハムデュラン

回答:


152

ではconfig/elasticsearch.ymlプット

network.host: 0.0.0.0

3
network.host:0.0.0.0は、すべてのローカルネットワークがこのノードにアクセスできるようにします。これは、私が推測するプロダクションモードにはお勧めできません。
イゼンゴ2017年

1
これは、すべてのIPアドレスが許可されることを意味します。安全ではありません!
Yavuz 2017

1
私のCentOSシステム上のファイルは次の場所に/etc/elasticsearch/elasticsearch.ymlあります。network.host: ["0.0.0.0"]
AlikElzin-kilaka18年

私にはうまくいきません。ESはまだ127.0.0.1で実行されていますT_T
E.Big 2018年

Windowsで設定ファイルが見つからない場合は、C:\ProgramData\Elastic\Elasticsearch\config場所を確認してください。プログラムでElasticsearchに接続する場合はtransport.host: 0.0.0.0elasticsearch.ymlファイルに設定する必要があります。
コヨーテ2018

58

デフォルトでは、httpトランスポートと内部elasticsearchトランスポートはlocalhostのみをリッスンします。ローカルホスト以外のホストから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
これらすべての値を明示的に設定して、VirtualBoxホストマシンからelasticを使用してゲストに接続できるようにする必要がありました。どうもありがとうございました!
トム

Elasticsearch7.1.0でテスト済み-ソリューションはVirtualBox上のESに接続して正常に動作します。
DBPrasad19年

上記の構成は、
Elastic

2
ほぼ毎月、私はこの構成をコピーするためにここに来ます:D
Neelesh

おかげでこれは私にトンを助けました。私は接続例外の問題に苦しんでいました。これらの行をelasticsearch.ymlファイルに追加した後、最終的に機能するようになりました
Spencer Trinh

19

elasticsearch.ymlファイルの名前をconfigフォルダー内のelasticsearch.jsonに変更し、次を追加します。

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

別のオプションは、ES_JAVA_OPTSを使用して、またはelasticsearchコマンドのパラメーターとして、外部で設定を提供することです。次に例を示します。

$ elasticsearch -Des.network.host=10.0.0.4

もう1つのオプションは、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をご覧ください。


取得:スレッド "main"の例外BindTransportException [[9300-9400]へのバインドに失敗しました]; ネスト:ChannelException [バインドに失敗しました:/10.0.0.4:9400]
mountrix 2016

2
これはどのように行うことができますか?つまり、最初のもの、うーん、YAML、2番目のものが??であるため、名前elasticsearch.ymlを変更するelasticsearch.jsonことはできません。JSON
Shubham A. 2017

9

@arsentが述べたように、そのIPアドレスを構成ファイルに追加します。

sudo nano /etc/elasticsearch/elasticsearch.yml

Jayはまた、重要なポイントを追加しました。ファイアウォールを使用している場合は、そのポートへのトラフィックを許可するルールを追加することを忘れないでください。

マスターサーバーがhttp経由でESにアクセスすることを許可する場合は、その特定のアドレスからのみアクセスを許可するルールを追加します。たとえば、ufwを使用している場合、次のコマンドを実行してポートを追加します。

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

xxx.xxx.xxx.xxxをマスターサーバーのIPアドレスに置き換え、zzzzを構成したポートに置き換えます config/elasticsearch.yml

デフォルトの9200を維持せずに、カスタムポートを使用することをお勧めします

テストするには、マスターサーバーにSSHで接続し、正しいポートでES IPにpingを実行して、応答が得られるかどうかを確認します。

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

ブラウザでESを試して、他のIPからESにアクセスできないことを確認することもできます。

あります優れた記事ショーはどのようDigitalOcean上のUbuntu上でESを設定することは、



7

Elasticsearchがインストールされているリモートマシンで、以下の2つの構成を追加するだけです。 /etc/elasticsearch/elasticsearch.yml

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

Elasticsearch6.8.3およびリモートマシンとしてのAWSEC2 LinuxAMIでテスト済み


5

/etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0

2

localhostを2か所で0.0.0.0に置き換えます。

  1. 後藤/etc/elasticsearch/elasticsearch.ymlnetwork.hostで値を探し、0.0.0.0に変更します

  2. Kibanaを使用している場合、これはステップです。後藤/etc/kibana/kibana.ymlserver.hostで値を探し0.0.0.0に変更します

これで、IPアドレスとホストを使用してリモートアクセスにアクセスできます。


これは、次のコマンドを追加することが重要です:UFWは9200を許可し、UFWは5601を許可
ホセ・T.

1

config/elasticsearch.ymlnetwork.host: 0.0.0.0@ arsentが言ったように入れてください。また、ElasticSearchポートのファイアウォールにインバウンドルールを追加します(9200ByDefault)。

ElasticSearchバージョン2.3.0で動作しました


1

以下のためのElasticSearch 7.8とアップ

単一ノードを使用しているかどうかを確認してください。次の行を追加します

cluster.initial_master_nodes: node-1

別のコンピューターまたはアプリケーションからElasticsearchサーバーにアクセスするには、ノードに次の変更を加えます。 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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.