Как включить удаленный доступ / запрос в Elasticsearch 2.0?
начиная с версии 2.0 Elasticsearch слушает только на localhost по умолчанию, но я хотел бы сделать запрос за пределами localhost.
например, такой запрос разрешен:
http://localhost:9200/
но это не так:
http://server_name:9200/
(извне сервера, например: локальный компьютер в той же локальной сети).
Спасибо за вашу помощь.
6 ответов:
переименовать elasticsearch.yml-файл в elasticsearch.json внутри папки конфигурации и добавить:
{ "network" : { "host" : "10.0.0.4" } }
другой вариант - предоставить настройки извне либо с помощью ES_JAVA_OPTS, либо в качестве параметров для команды elasticsearch, например:
$ elasticsearch -Des.network.host=10.0.0.4
другой вариант-установить es.по умолчанию. префикс вместо 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
по умолчанию транспорт http и внутренний транспорт elasticsearch слушает только localhost. Если вы хотите получить доступ к Elasticsearch с хоста, отличного от localhost, попробуйте добавить следующие конфигурации в config / elasticsearch.в формате YML.
transport.host: localhost transport.tcp.port: 9300 http.port: 9200 network.host: 0.0.0.0
здесь сети.хоста 0.0.0.0 разрешить доступ с любого хоста в сети.
как упоминал @arsent, добавьте этот ip-адрес в файл конфигурации:
sudo nano /etc/elasticsearch/elasticsearch.yml
Джей и добавил важный момент - если вы используете фаервол, не забудьте добавить правило, разрешающее трафик на этот порт.
если вы хотите разрешить главному серверу доступ к ES через http, добавьте правило, разрешающее доступ только с этого конкретного адреса. Например, предположим, что вы используете ufw, а затем выполните эту команду, чтобы добавить свой порт:
sudo ufw allow from xxx.xxx.xxx.xxx to any port zzzz
замените ХХХ.ХХХ.ХХХ.ХХХ с ваш IP-адрес главного сервера и zzzz с портом, который вы настроили в
config/elasticsearch.yml
рекомендуется использовать пользовательский порт и не сохранять значение по умолчанию 9200
чтобы проверить его, SSH на ваш главный сервер и пинговать ES ip с правильным портом, чтобы увидеть, если вы получите ответ:
curl -X GET 'http://xxx.xxx.xxx.xxx:zzzz'
вы также можете проверить, что ES недоступен с других IP-адресов, попробовав его с помощью браузера.
здесь отличная статья это показывает, как настроить ES на Ubuntu на DigitalOcean