Подтвердить что ты не робот

Как включить удаленный доступ/запрос в Elasticsearch 2.0?

Начиная с версии 2.0 Elicsearch по умолчанию прослушивает только локальный хост, но я хочу сделать запрос вне локального хоста.

Например, разрешен такой запрос:

http://localhost:9200/

Но это не так:

http://server_name:9200/ (извне сервера, например: локальный компьютер в той же локальной сети).

Спасибо за вашу помощь.

4b9b3361

Ответ 1

В config/elasticsearch.yml поставьте

network.host: 0.0.0.0

Ответ 2

По умолчанию HTTP-транспорт и внутренний транспорт elasticsearch только слушают localhost. Если вы хотите получить доступ к Elasticsearch с хоста, отличного от localhost, попробуйте добавить следующие конфигурации в 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 разрешает доступ с любого хоста в сети.

Ответ 3

Переименуйте файл 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

Ответ 4

Как упомянуто @arsent, добавьте этот IP-адрес в файл конфигурации:

sudo nano /etc/elasticsearch/elasticsearch.yml

Джей также добавил важный момент - если вы используете брандмауэр, не забудьте добавить правило, разрешающее трафик на этот порт.

Если вы хотите разрешить главному серверу доступ к ES через http, добавьте правило, разрешающее доступ только с этого конкретного адреса. Например, допустим, что вы используете ufw, а затем выполните эту команду, чтобы добавить свой порт:

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

Замените xxx.xxx.xxx.xxx на IP-адрес вашего главного сервера, а zzzz - на порт, который вы настроили в config/elasticsearch.yml

Рекомендуется использовать пользовательский порт и не сохранять по умолчанию 9200

Чтобы проверить это, подключитесь по SSH к вашему главному серверу и пропингуйте ip ES с правильным портом, чтобы увидеть, получите ли вы ответ:

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

Вы также можете проверить, что ES недоступен с других IP-адресов, попробовав его в своем браузере.

Там отличная статья, которая показывает, как настроить ES на Ubuntu на DigitalOcean

Ответ 6

В /etc/elasticsearch/elasticsearch.yml:

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

Ответ 7

Замените localhost на 0.0.0.0 в двух местах.

  1. Перейти к /etc/elasticsearch/elasticsearch.yml. Найдите значение в network.host и измените его на 0.0.0.0

  2. Это шаг, если вы используете Kibana. Перейти к /etc/kibana/kibana.yml. Найдите значение в server.host и измените его на 0.0.0.0

Теперь вы получаете удаленный доступ с IP-адресом и хостом.

Ответ 8

В config/elasticsearch.yml поместите network.host: 0.0.0.0, как сказал @arsent. А также добавьте входящее правило в брандмауэре для вашего порта ElasticSearch (9200 ByDefault). Он работал в ElasticSearch версии 2.3.0

Ответ 9

На удаленном компьютере, на котором установленasticsearch, просто добавьте две приведенные ниже конфигурации в /config/initializers/elasticsearch.rb

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

Испытано на эластичном поиске 6.8.3 и AWS EC2 Linux AMI в качестве удаленной машины