Ошибка отказа соединения при эластичном поиске


когда я попытался подключиться к Elastic Search с помощью curl http://localhost:9200 Он работает нормально.

но когда я запускаю curl http://IpAddress:9200 он бросает сообщение об ошибкеconnection refused port 9200.

как устранить эту ошибку?

17 61

17 ответов:

по умолчанию он должен привязываться ко всем локальным адресам. Итак, предполагая, что у вас нет проблемы сетевого уровня с брандмауэрами, единственная настройка ES, которую я могу проверить, - это network.bind_host и убедитесь, что он либо не установлен, либо установлен в 0.0.0.0 или ::0 или в правильный IP-адрес для вашей сети.

обновление: за комментарии в ES 2.3 вы должны установить .

редактировать /etc/elasticsearch/elasticsearch.yml и добавить следующую строку:

network.host: 0.0.0.0

это "отключит" этот параметр и позволит подключаться с других IP-адресов.

пробовал все на этой странице, и только инструкции от здесь помогло.

на /etc/default/elasticsearch, убедитесь, что они не комментируются:

START_DAEMON=true
ES_USER=elasticsearch
ES_GROUP=elasticsearch
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
RESTART_ON_UPGRADE=true

убедится /var/lib/elasticsearch принадлежит пользователю elasticsearch:

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/

в моем случае elasticsearch был запущен. Но все равно пришлось

curl: (7) Failed to connect to localhost port 9200: Connection refused

следующая команда не удалась

sudo service elasticsearch restart

чтобы заставить его работать, мне пришлось бежать вместо

sudo systemctl restart elasticsearch

потом все прошло нормально.

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

убедитесь, что сервер запущен. Я видел эту проблему, когда у моей виртуальной машины было слишком мало оперативной памяти, и es не мог запуститься.

sudo systemctl status elasticsearch

выше будет показано, если es действительно работает.

ни одно из предложенных здесь решений не работало для меня, но то, что в конечном итоге заставило его работать, добавляло следующее к elasticsearch.yml

network:
  host: 0.0.0.0
http:
  port: 9200

после этого я перезапустил службу и теперь я могу curl это как внутри виртуальной машины, так и снаружи. По какой-то странной причине, мне пришлось попробовать несколько разных вариантов curl вызов внутри виртуальная машина до этого работала:

curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200

Примечание: я использую Elasticsearch 5.5 на Ubuntu 14.04

Почему бы тебе не начать с этой командной строки:

$ sudo service elasticsearch status

Я сделал это и сделать:

"There is insufficient memory for the Java Runtime..."

затем я отредактировал /etc/elasticsearch/jvm.options file:

...

################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

################################################################

...

это работает как шарм.

для этой проблемы мне пришлось использовать : sudo /usr/share/elasticsearch/bin/elasticsearch start

чтобы иметь возможность получить что-то на портах 9200/9300 (sudo netstat-ntlp) и ответ на:

curl -XGET http://localhost:9200

у меня была такая же проблема с отказом от соединений на порту 9200. Проверьте состояние службы elasticsearch с помощью команды sudo service elasticsearch status. Если он представляет ошибку, и Вы читаете что-либо, связанное с Java, вероятно, проблема заключается в вашей памяти jvm. Вы можете редактировать его в /etc/elasticsearch/jvm.options. Для машины с оперативной памятью 1GB в среде Amazon я сохранил свою конфигурацию:

-Xms128m
-Xmx128m

после установки этого и перезапуска службы elasticsearch он работал как шарм. Nmap и UFW (если вы используете локальный брандмауэр) проверка также должна быть полезной.

открыть Dockerfile под elasticsearch папка и обновление сеть".узел=0.0.0.0" С сеть".host=127.0.0.1". Затем перезапустите контейнер. Проверьте соединение с curl.

$ curl http://docker-machine-ip:9200
{
  "name" : "vI6Zq_D",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hhyB_Wa4QwSX6zZd1F894Q",
  "version" : {
    "number" : "5.2.0",
    "build_hash" : "24e05b9",
    "build_date" : "2017-01-24T19:52:35.800Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.0"
  },
  "tagline" : "You Know, for Search"
}

изменить сети.привязка к 0.0.0.0 и http:port до 9200. Адрес привязки 0.0.0.0 означает все IPv4-адреса на локальном компьютере. Если хост имеет два IP-адреса, 192.168.1.1 и 10.1.2.1, и сервер, работающий на хосте, слушает 0.0.0.0, он будет доступен на обоих этих IP-адресах.

В этом случае, прежде всего нужно проверить версию Java, используя следующую команду:

java -version

после выполнения этой команды вы получите что-то вроде этого:

версия java " 1.7.0_51" Во время выполнения OpenJDK в окружающей среде (на RHEL-2.4.5.5.el7-x86_64 u51-b31) 64-разрядная серверная виртуальная машина OpenJDK (сборка 24.51-b03, смешанный режим)

затем используйте эту команду:

update-alternatives --config java

и выберите версию ниже

*+ 1 /usr/lib/jvm / java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre / bin / java 2 / usr / java/jdk1.8.0_73/jre/bin / java

введите, чтобы сохранить текущий выбор[+], или введите номер выбора: 2

curl -XGET http://127.0.0.1:9200

мои 2 цента,

Я просто следовал процедуре установки на Digital Ocean, по-видимому, пакет, доступный в репозиториях, не обновлен, я удалил все и следовал процедуре установки непосредственно из Elastic Search, и все работает сейчас, в основном поведение out of the box находится на локальном хосте, указывающем на 9200. То же самое / проблема найдена с Kibana, решение для меня тоже было, чтобы удалить все и просто следовать их процедуре, надеюсь, это спасет кого-то два часы (время, которое я потратил, выясняя, как настроить ELK!)

en

после использования некоторых из ответов выше, не забывайте, что после установки apt, полная перезагрузка может быть в порядке.

просто чтобы добавить это, я наткнулся на многие документы через google, которые сказали, чтобы установить сеть.узел localhost.

Это дало мне печально известную связь отказался. Вы должны использовать IP-адрес (127.0.0.1), а не доменное имя.

Джефф

обновить JDK до последней версии для вашего примера подобного.

убедитесь, что порт 9200 открыт для моего случая, это был экземпляр amazon, поэтому, когда я открыл его в своей группе безопасности, команда curl работала.