Elasticsearch 2.0'da uzaktan erişimi / isteği nasıl etkinleştiririm?


97

V2.0'dan başlayarak Elasticsearch, varsayılan olarak yalnızca localhost'ta dinliyor, ancak localhost dışında talepte bulunmak istiyorum.

Örneğin, bunun gibi bir isteğe izin verilir:

http://localhost:9200/

Ama bu değil:

http://server_name:9200/ (sunucunun dışından, örneğin: aynı LAN'daki yerel bir bilgisayar).

Yardımınız için teşekkürler.


6
Bu aradığınız cevabı stackoverflow.com/questions/33412549/...
Val

Teşekkürler! Tam olarak aradığım buydu!
İbrahim Duran

Yanıtlar:


152

In config/elasticsearch.ymlput

network.host: 0.0.0.0

3
network.host: 0.0.0.0, tüm yerel ağların bu düğüme erişmesine izin verir. Sanırım üretim modu için bu tavsiye edilmiyor.
Isengo

1
bu, tüm ip adreslerine izin verildiği anlamına gelir. Güvenli değil!
Yavuz

1
CentOS sistemimdeki dosya /etc/elasticsearch/elasticsearch.ymlnetwork.host: ["0.0.0.0"]
şurada

benim için çalışmıyor. ES 127.0.0.1T_T
E. Büyük

Windows'ta yapılandırma dosyasını bulamayanlar için lütfen C:\ProgramData\Elastic\Elasticsearch\configkonumu kontrol edin . Eğer Elasticsearch için programlı bağlamak istiyorsanız ayarlamak gerekebilir transport.host: 0.0.0.0içinde elasticsearch.ymldosyanın.
kojot

59

Varsayılan olarak http aktarımı ve dahili elasticsearch aktarımı yalnızca localhost'u dinler. Elasticsearch'e localhost dışındaki bir ana bilgisayardan erişmek istiyorsanız, config / elasticsearch.yml içine aşağıdaki yapılandırmaları eklemeyi deneyin .

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

Burada, 0.0.0.0 olarak network.host, ağ içindeki herhangi bir ana bilgisayardan erişime izin verir.


2
Tüm bu değerleri, VirtualBox ana makinesinden elastik olarak bağlanabilmek için açıkça ayarlamak zorunda kaldım. Çok teşekkür ederim!
Tom

Elasticsearch 7.1.0'da test edildi - çözümler VirtualBox'ta ES'ye bağlanarak iyi çalışıyor.
DB Prasad

Yukarıdaki yapılandırma, elastik arama sürümü 7.2.0 :-) ile de çalışıyor
dinu0101

2
Neredeyse her ay bu yapılandırmayı kopyalamak için buraya geliyorum: D
Neelesh

teşekkürler bu bana bir ton yardımcı oldu. Bir bağlantı istisnası sorunuyla mücadele ediyordum; ve nihayet bu satırları elasticsearch.ymldosyaya ekledikten sonra çalıştırdı
Spencer Trinh

19

Elasticsearch.yml dosyasını config klasörünün içinde elasticsearch.json olarak yeniden adlandırın ve şunu ekleyin:

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

Diğer bir seçenek, ayarları harici olarak ES_JAVA_OPTS kullanarak veya elasticsearch komutuna parametreler olarak sağlamaktır, örneğin:

$ elasticsearch -Des.network.host=10.0.0.4

Diğer bir seçenek de es.default'u ayarlamaktır. es yerine önek. önek; bu, varsayılan ayarın yalnızca yapılandırma dosyasında açıkça belirtilmediği takdirde kullanılacağı anlamına gelir.

Başka bir seçenek de ${...}, yapılandırma dosyasında bir ortam ayarına dönüşecek olan gösterimi kullanmaktır, örneğin:

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

Yapılandırma dosyasının konumu, bir sistem özelliği kullanılarak harici olarak ayarlanabilir:

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

Daha fazla bilgi için https://www.elastic.co/guide/en/elasticsearch/reference/1.4/setup-configuration.html adresine bakın.


Got: "main" iş parçacığında özel durum BindTransportException [[9300-9400] 'e bağlanılamadı]; yuvalanmış: ChannelException [Bağlanamadı: /10.0.0.4:9400]
mountrix

2
Bu yapılabilir Nasıl, yani, biz sadece adlandırmak edemez elasticsearch.ymliçin elasticsearch.jsonilki, hmmm, YAML ve ikinci biridir çünkü JSON??
Shubham A.

9

@Arsent'in bahsettiği gibi, bu ip adresini yapılandırma dosyasına ekleyin:

sudo nano /etc/elasticsearch/elasticsearch.yml

Jay ayrıca önemli bir nokta ekledi - bir güvenlik duvarı kullanıyorsanız, o bağlantı noktasına trafik sağlayan bir kural eklemeyi unutmayın.

Bir ana sunucunun http üzerinden ES'ye erişmesine izin vermek istiyorsanız, yalnızca o belirli adresten erişime izin veren bir kural ekleyin. Örneğin, ufw kullandığınızı varsayalım, ardından bağlantı noktanızı eklemek için şu komutu çalıştırın:

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

Xxx.xxx.xxx.xxx'i ana sunucu IP adresinizle ve zzzz'i yapılandırdığınız bağlantı noktasıyla değiştirin. config/elasticsearch.yml

Özel bir bağlantı noktası kullanılması ve varsayılan 9200'ün korunmaması önerilir.

Test etmek için ana sunucunuza SSH girin ve bir yanıt alıp almadığınızı görmek için doğru bağlantı noktasıyla ES ipine ping atın:

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

Tarayıcınızla deneyerek ES'nin diğer IP'lerden erişilemez olduğunu da doğrulayabilirsiniz.

Orada mükemmel bir makale gösterileri nasıl DigitalOcean üzerinde Ubuntu ES kurmak olduğunu



7

Elasticsearch'ün kurulu olduğu uzak makinede, aşağıdaki iki yapılandırmayı /etc/elasticsearch/elasticsearch.yml

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

Elasticsearch 6.8.3 ve AWS EC2 Linux AMI üzerinde uzak makine olarak test edilmiştir


5

İçinde /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'u iki yerde 0.0.0.0 ile değiştirin .

  1. Goto /etc/elasticsearch/elasticsearch.yml. Network.host'ta değer arayın ve bunu 0.0.0.0 olarak değiştirin

  2. Kibana kullanıyorsanız bu adımdır. Goto /etc/kibana/kibana.yml. Server.host'taki değeri arayın ve 0.0.0.0 olarak değiştirin

Artık IP adresi ve ana bilgisayar ile uzaktan erişime erişebilirsiniz.


Aşağıdaki komutları eklemek önemlidir: ufw allow 9200 ve ufw allow 5601
José T.

1

Olarak config/elasticsearch.ymlsöylemek gerekirse, network.host: 0.0.0.0@arsent olarak adı geçen. Ayrıca ElasticSearch bağlantı noktanız (9200 ByDefault) için güvenlik duvarına Gelen Kuralı ekleyin.

ElasticSearch sürüm 2.3.0'da çalıştı


1

İçin ElasticSearch 7.8 ve yukarı

Tek düğümde olup olmadığınızı kontrol edin. aşağıdaki satırı ekle

cluster.initial_master_nodes: node-1

Elasticsearch sunucusuna başka bir bilgisayardan veya uygulamadan erişmek için, düğümün sunucusunda aşağıdaki değişiklikleri yapın. C:\ProgramData\Elastic\Elasticsearch\config\elasticsearch.yml file:

Aşağıdaki satırları ekleyin

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

Bir süre CORS'u etkinleştirmeniz gerekebilir

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

İşte tam yml dosyam

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

Ayar dışında network.host : 0.0.0.0

aşağıdaki parametreleri ayarlamanız gerekebilir

node.name: elasticsearch-node-1

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

Tüm ayarlar devreye giriyor elasticsearch/elasticsearch.yml

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.