我由elasticsearch
安装了brew install elasticsearch
,并从brew services start elasticsearch
开始,但是curl http://127.0.0.1:9200
显示connection refused
。我检查了端口:netstat -a -n | grep tcp | grep 9200
,其中一些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
,则错误似乎是:
数据路径[/ usr / local / var / lib / elasticsearch / elasticsearch_nikitavlasenko]中存在群集名称[elasticsearch_nikitavlasenko]子目录。这些路径下的所有数据必须在一个目录中上移到路径[/ usr / local / var / lib / elasticsearch]
答案 0 :(得分:8)
您之前是否安装了旧版本(2.x或更早版本)?听起来很像这个PR to check that you're not using the old behavior when there was the node name in the path。
我会做什么:
/usr/local/var/lib/elasticsearch/elasticsearch_nikitavlasenko
并重新开始。path.data
或将文件夹上移一级(就像日志消息所述)。PS:我不会将端口9300用于HTTP,因为通常这是用于集群本身中节点通信的端口。
答案 1 :(得分:2)
一段时间后就遇到了这个问题,请添加一个最小的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
请检查其是否在您的配置中?还要正确设置数据和日志文件夹路径。
如果您遇到任何问题并对这些配置有疑问,请告诉我。
答案 2 :(得分:1)
这是Elasticsearch的Homebrew公式错误的结果。它正在创建一个目录,该目录的名称不再是Elasticsearch所允许的。
该公式已更新,可以从path.data中删除节点名称,并且不再创建可以解决此问题的无效目录。
答案 3 :(得分:0)
感谢,这是一个重要的帮助,因为它现在可以正常工作了。