Не удается запустить ElasticSearch на Mac

#elasticsearch

#elasticsearch

Вопрос:

Я установил elasticsearch с помощью brew install elasticsearch и запустил его с brew services start elasticsearch , однако, curl http://127.0.0.1:9200 показывает connection refused . Я проверил порт: netstat -a -n | grep tcp | grep 9200 и там работает some ipv4 . Хорошо, итак, я открыл /usr/local/etc/elasticsearch/elasticsearch.yml и изменил порт на 9300 , а также раскомментировал и изменил: network.host: 127.0.0.1 . Все еще показывает, connection refused когда я это делаю curl http://127.0.0.1:9300 . OS Это MacOS High Sierra 10.13.4 . Если мы откроем /usr/local/var/log/elasticsearch/elasticsearch_nikitavlasenko.log , ошибка, похоже,:

Подкаталог с именем кластера [elasticsearch_nikitavlasenko] существует в путях к данным [/usr/local/var /lib/elasticsearch /elasticsearch_nikitavlasenko]. Все данные по этим путям должны быть перемещены вверх по одному каталогу в пути [/usr/local/var / lib /elasticsearch]

Комментарии:

1. Нет, определенно нет. Пожалуйста, прочтите первую строку curl http://localhost:9200 it is working fine. В моем случае этого никогда не происходило. Кроме того, как вы можете видеть из моего вопроса, я уже пробовал устанавливать network.host

2. какую версию ES вы используете? также можете ли вы предоставить содержимое вашего elasticsearch.yml

3. смогли ли вы устранить проблему?

4. Пока нет, собираюсь опробовать это в ближайшее время.

Ответ №1:

Была ли у вас ранее установлена более старая версия (2.x или более ранняя)? Это звучит очень похоже на этот запрос, чтобы проверить, что вы не используете старое поведение, когда в пути было имя узла.

Что бы я сделал:

  • Если вам больше не нужны данные, просто удалите /usr/local/var/lib/elasticsearch/elasticsearch_nikitavlasenko и начните заново.
  • Если вам нужны данные, вы можете либо изменить path.data в своей конфигурации, либо переместить папку на один уровень выше (точно так же, как указано в сообщении журнала).

PS: Я бы не стал использовать порт 9300 для HTTP, потому что обычно это порт, используемый для связи узлов в самом кластере.

Комментарии:

1. У меня только что была такая же проблема. Оказывается, что конфигурационный файл указывает на /usr/local/var/lib/elasticsearch путь к данным, но пакет создает каталог /usr/local/var/lib/elasticsearch/elasticsearch_USERNAME . Поскольку этот elasticsearch_USERNAME каталог находится там, он не запускается. Я устранил ошибку, просто удалив elasticsearch_USERNAME каталог, как вы предложили.

Ответ №2:

Это было результатом ошибки в формуле Homebrew для Elasticsearch. Это создавало каталог с именем узла, которое больше не разрешено для Elasticsearch.

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

Ответ №3:

Некоторое время назад столкнулся с этой проблемой, пожалуйста, добавьте минимальный конфигурационный файл Elastic. для меня это выглядит следующим образом

 http.port: 9200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

path.data: /usr/local/var/elasticsearch/
path.logs: /usr/local/var/log/elasticsearch/
# Set both 'bind_host' and 'publish_host':
network.host: 127.0.0.1

# 1. Disable multicast discovery (enabled by default):
discovery.zen.ping.multicast.enabled: false
script.engine.groovy.inline.aggs: on
  

Я думаю, что у меня не было приведенной ниже конфигурации, которая вызвала проблему:

 network.host: 127.0.0.1
  

Пожалуйста, проверьте, есть ли это в вашей конфигурации? Также правильно укажите путь к папке с вашими данными и журналами.

Дайте мне знать, если у вас возникнут какие-либо проблемы и возникнут вопросы по этим конфигурациям.