Ответ 1
В config/elasticsearch.yml
поставьте
network.host: 0.0.0.0
Начиная с версии 2.0 Elicsearch по умолчанию прослушивает только локальный хост, но я хочу сделать запрос вне локального хоста.
Например, разрешен такой запрос:
http://localhost:9200/
Но это не так:
http://server_name:9200/
(извне сервера, например: локальный компьютер в той же локальной сети).
Спасибо за вашу помощь.
В config/elasticsearch.yml
поставьте
network.host: 0.0.0.0
По умолчанию 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 разрешает доступ с любого хоста в сети.
Переименуйте файл 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
Как упомянуто @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
В /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
Замените localhost на 0.0.0.0 в двух местах.
Перейти к /etc/elasticsearch/elasticsearch.yml
. Найдите значение в network.host и измените его на 0.0.0.0
Это шаг, если вы используете Kibana. Перейти к /etc/kibana/kibana.yml
. Найдите значение в server.host и измените его на 0.0.0.0
Теперь вы получаете удаленный доступ с IP-адресом и хостом.
В config/elasticsearch.yml поместите network.host: 0.0.0.0, как сказал @arsent. А также добавьте входящее правило в брандмауэре для вашего порта ElasticSearch (9200 ByDefault). Он работал в ElasticSearch версии 2.3.0
На удаленном компьютере, на котором установлен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 в качестве удаленной машины