Elasticsearch 2.0에서 원격 액세스 / 요청을 활성화하려면 어떻게해야합니까?


97

v2.0부터 Elasticsearch는 기본적으로 localhost에서만 수신하고 있지만 localhost 외부에서 요청하고 싶습니다.

예를 들어 다음과 같은 요청이 허용됩니다.

http://localhost:9200/

그러나 이것은 아닙니다 :

http://server_name:9200/ (서버 외부에서, 예 : 동일한 LAN에있는 로컬 컴퓨터).

당신의 도움을 주셔서 감사합니다.


6
이것이 당신이 찾고있는 대답입니다 : stackoverflow.com/questions/33412549/…
Val

감사! 내가 찾던 바로 그 것이었다!
Abraham Duran

답변:


152

config/elasticsearch.yml넣어

network.host: 0.0.0.0

3
network.host : 0.0.0.0은 모든 로컬 네트워크가이 노드에 액세스 할 수 있도록합니다. 이것은 생산 모드에 권장되지 않습니다.
Isengo

1
모든 IP 주소가 허용됨을 의미합니다. 안전하지 않습니다!
Yavuz

1
내 CentOS는 시스템의 파일에서 발견되었다 /etc/elasticsearch/elasticsearch.yml및 내용 :network.host: ["0.0.0.0"]
AlikElzin-kilaka을

나를 위해 작동하지 않습니다. ES는 여전히 127.0.0.1T_T
E.Big

Windows에서 구성 파일을 찾을 수없는 경우 C:\ProgramData\Elastic\Elasticsearch\config위치 를 확인하십시오 . 당신이 Elasticsearch에 프로그래밍 방식으로 연결하려는 경우 당신은 설정해야 할 수도 있습니다 transport.host: 0.0.0.0elasticsearch.yml파일.
kojot

60

기본적으로 http 전송 및 내부 elasticsearch 전송은 localhost 만 수신합니다. localhost 이외의 호스트에서 Elasticsearch에 액세스하려면 config / elasticsearch.yml 에 다음 구성을 추가해보십시오 .

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

여기서 network.host as 0.0.0.0은 네트워크 내의 모든 호스트에서 액세스를 허용합니다.


2
VirtualBox 호스트 컴퓨터에서 탄력적으로 게스트로 연결할 수 있도록 모든 값을 명시 적으로 설정해야했습니다. 대단히 감사합니다!

Elasticsearch 7.1.0에서 테스트-솔루션은 VirtualBox의 ES에 연결하여 잘 작동합니다.
DB Prasad

위의 구성은 탄력적 검색 버전 7.2.0에서도 작동합니다. :-)
dinu0101

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

또 다른 옵션은 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]에 바인딩하지 못했습니다.]; nested : ChannelException [Failed to bind to : /10.0.0.4:9400]
mountrix

2
이 작업을 어떻게 수행 할 수 있습니까? 첫 번째, hmmm, YAML 및 두 번째 항목은 ??로 이름 elasticsearch.yml을 바꿀 수 없습니다 . elasticsearch.jsonJSON
Shubham A.

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를 핑하여 응답을 받는지 확인합니다.

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

브라우저에서 ES를 시도하여 다른 IP에서 ES에 액세스 할 수 없는지 확인할 수도 있습니다.

거기에 뛰어난 기사 쇼가 어떻게 디지털 오션에 우분투 ES를 설정하는 것으로는



7

elasticsearch가 설치된 원격 머신에서 아래 두 가지 구성을 추가하십시오. /etc/elasticsearch/elasticsearch.yml

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

Elasticsearch 6.8.3 및 AWS EC2 Linux AMI에서 원격 시스템으로 테스트되었습니다.


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를 0.0.0.0 으로 바꿉니다 .

  1. Goto /etc/elasticsearch/elasticsearch.yml. network.host 에서 값 을 찾아 0.0.0.0으로 변경 합니다.

  2. Kibana를 사용하는 경우이 단계입니다. Goto /etc/kibana/kibana.yml. server.host 에서 값 을 찾아 0.0.0.0으로 변경 합니다.

이제 IP 주소 및 호스트를 사용하여 원격으로 액세스합니다.


다음 명령을 추가하는 것이 중요합니다. ufw allow 9200 및 ufw allow 5601
José T.

1

config/elasticsearch.yml넣어, network.host: 0.0.0.0@arsent로했다. 또한 ElasticSearch 포트 (9200 ByDefault)에 대해 방화벽에 인바운드 규칙을 추가하십시오.

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


0

Windows 10 및 독립 실행 형 Elasticsearch 7을 사용하여이를 elasticsearch.yml에 넣어 문제를 해결합니다.

network.host : 0.0.0.0 discovery.type : 단일 노드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.