v2.0以降、Elasticsearchはデフォルトでローカルホストでのみリッスンしていますが、ローカルホストの外部でリクエストを行いたいと思います。
たとえば、次のようなリクエストが許可されます。
http://localhost:9200/
しかし、これはそうではありません:
http://server_name:9200/
(サーバーの外部から、たとえば:同じLAN内のローカルコンピューター)。
ご協力いただきありがとうございます。
v2.0以降、Elasticsearchはデフォルトでローカルホストでのみリッスンしていますが、ローカルホストの外部でリクエストを行いたいと思います。
たとえば、次のようなリクエストが許可されます。
http://localhost:9200/
しかし、これはそうではありません:
http://server_name:9200/
(サーバーの外部から、たとえば:同じLAN内のローカルコンピューター)。
ご協力いただきありがとうございます。
回答:
ではconfig/elasticsearch.yml
プット
network.host: 0.0.0.0
/etc/elasticsearch/elasticsearch.yml
あります。network.host: ["0.0.0.0"]
T_T
C:\ProgramData\Elastic\Elasticsearch\config
場所を確認してください。プログラムでElasticsearchに接続する場合はtransport.host: 0.0.0.0
、elasticsearch.yml
ファイルに設定する必要があります。
デフォルトでは、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は、ネットワーク内の任意のホストからのアクセスを許可します。
elasticsearch.yml
ファイルに追加した後、最終的に機能するようになりました
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をご覧ください。
elasticsearch.yml
を変更するelasticsearch.json
ことはできません。JSON
@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を設定することは、
/etc/elasticsearch/elasticsearch.ymlで、次の値を設定します。
network.host: [ localhost, _site_ ]
このオプションを使用すると、ローカルホストとローカルネットワーク(192.168.XX)上のすべてのコンピューターの両方からアクセスできますが、外部からはアクセスできません。
これと他のオプションについてもっと読むドキュメントを読む
で/etc/elasticsearch/elasticsearch.yml
:
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
以下のための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