当我尝试使用连接到Elastic Search时
curl http://localhost:9200
它工作正常。
但是当我运行curl http://IpAddress:9200
时,它会抛出错误connection refused port 9200
。
如何解决此错误?
答案 0 :(得分:68)
默认情况下,它应绑定到所有本地地址。因此,假设您没有防火墙的网络层问题,我可以考虑检查的唯一ES设置是network.bind_host
,并确保它未设置或设置为0.0.0.0
或::0
或网络的正确IP地址。
更新:根据ES 2.3中的评论,您应该设置network.host
。
答案 1 :(得分:67)
修改/etc/elasticsearch/elasticsearch.yml
并添加以下行:
network.host: 0.0.0.0
这将"未设置"此参数将允许来自其他IP的连接。
答案 2 :(得分:23)
尝试了此页面上的所有内容,只有来自here的说明有帮助。
<{1>}中的,请确保这些内容未被注释:
/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
归elasticsearch用户所有:
/var/lib/elasticsearch
答案 3 :(得分:19)
在我看来,弹性搜索已经开始了。 但仍然有
curl: (7) Failed to connect to localhost port 9200: Connection refused
以下命令不成功
sudo service elasticsearch restart
为了让它起作用,我不得不改为运行
sudo systemctl restart elasticsearch
然后一切都很好。
答案 4 :(得分:15)
为什么不从这个命令行开始:
$ sudo service elasticsearch status
我做到了并得到:
"There is insufficient memory for the Java Runtime..."
然后我编辑了/etc/elasticsearch/jvm.options
文件:
...
################################################################
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
#-Xms2g
#-Xms2g
-Xms512m
-Xmx512m
################################################################
...
这就像一个魅力。
答案 5 :(得分:13)
这里提出的解决方案都不适用于我,但最终得到它的工作是将以下内容添加到elasticsearch.yml
network:
host: 0.0.0.0
http:
port: 9200
之后,我重新启动了该服务,现在我可以在VM内部和外部curl
进行此操作。出于某些奇怪的原因,我必须在VM运行之前在 VM内部尝试curl
调用的几个不同变体:
curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200
注意:我在Ubuntu 14.04上使用Elasticsearch 5.5
答案 6 :(得分:12)
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
确保服务器已启动。当我的虚拟机内存太小而无法启动时,我已经看到了这个问题。
sudo systemctl status elasticsearch
上面将告诉你es是否确实在运行。
答案 7 :(得分:7)
对于这个问题,我不得不使用:
sudo /usr/share/elasticsearch/bin/elasticsearch start
能够在端口9200/9300上获取某些内容(sudo netstat -ntlp)并回复:
curl -XGET http://localhost:9200
答案 8 :(得分:3)
我在拒绝9200端口上的连接时遇到了同样的问题。
使用命令sudo service elasticsearch status
检查elasticsearch服务状态。如果它出现错误并且您阅读了与Java相关的任何内容,那么问题可能就是您的jvm内存。您可以在/etc/elasticsearch/jvm.options
中对其进行修改。对于亚马逊环境中的1GB RAM内存机器,我保留了以下配置:
-Xms128m
-Xmx128m
设置并重新启动elasticsearch服务后,它就像一个魅力。 Nmap和UFW(如果使用本地防火墙)检查也应该有用。
答案 9 :(得分:2)
在 elasticsearch 文件夹下打开 Dockerfile ,然后使用&#34; network.host = 0.0.0.0&#34; >&#34; network.host = 127.0.0.1&#34; 即可。然后重启容器。用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"
}
答案 10 :(得分:2)
我遇到了类似的问题。
这是我解决的方式
运行以下服务命令以启动 ElasticSearch
sudo service elasticsearch start
OR
sudo systemctl start elasticsearch
如果仍然出现错误
卷曲:(7)无法连接到本地主机端口9200:连接被拒绝
运行以下服务命令以检查 ElasticSearch
的状态sudo service elasticsearch status
OR
sudo systemctl status elasticsearch
如果您收到如下所示的响应(活动:活动(正在运行)),则您 ElasticSearch 处于活动并正在运行
●elasticsearch.service-Elasticsearch 已加载:已加载(/usr/lib/systemd/system/elasticsearch.service;已禁用;供应商预设:已启用) 有效:有效(运行中),自WAT 2019-09-21 11:22:21; 3秒前
然后您可以使用以下命令向本地主机上的端口9200发送HTTP请求,以测试 Elasticsearch 节点是否正在运行:
curl http://localhost:9200
否则,如果您得到不同的响应,则可能需要进一步调试以修复它,但是运行下面的命令将帮助您检测从一开始就持有 ElasticSearch 服务的注意事项
sudo service elasticsearch status
OR
sudo systemctl status elasticsearch
如果要停止 ElasticSearch 服务,只需运行下面的service命令;
sudo service elasticsearch stop
OR
sudo systemctl stop elasticsearch
N / B:每次遇到错误时,您可能必须运行命令sudo service elasticsearch status
OR sudo systemctl status elasticsearch
,以告知 ElasticSearch 服务的状态。
这也适用于基巴纳语,每次遇到错误时都运行命令sudo service kibana status
OR sudo systemctl status kibana
,以告知状态 Kibana 服务
仅此而已。
我希望这会有所帮助。
答案 11 :(得分:1)
在这种情况下,首先需要使用以下命令检查java版本:
update-alternatives --config java
运行此命令后,您将得到以下内容:
java版“1.7.0_51” OpenJDK运行时环境(rhel-2.4.5.5.el7-x86_64 u51-b31) OpenJDK 64位服务器VM(内置24.51-b03,混合模式)
然后使用此命令:
curl -XGET http://127.0.0.1:9200
并选择以下版本
* + 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
getLocation
答案 12 :(得分:1)
我的2美分,
我只是按照Digital Ocean上的安装程序,显然repos中的可用包不是最新的,我删除了所有内容并直接从Elastic Search跟随安装程序,现在一切正常,基本上是开箱即用的行为是在一个指向9200的本地主机上。与Kibana相同的事情/问题,我的解决方案也是,删除所有内容并按照他们的程序,希望这可以节省两个小时的人(我花时间弄清楚如何设置ELK !)
烯
答案 13 :(得分:1)
如果遇到拒绝连接错误,只需运行以下命令以检查ElasticSearch服务的状态
sudo service elasticsearch status
这将帮助您解密ElasticSearch服务的状态及其处理方法。
答案 14 :(得分:1)
将network.bind更改为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都可以访问。
答案 15 :(得分:1)
编辑elasticsearch.yml
并添加以下行
http.host: 0.0.0.0
network.host: 0.0.0.0
不适用于
答案 16 :(得分:0)
对于那些在GCP(Google Cloud Platform)的虚拟机上安装ELK的用户,请确保您创建了Ingress
类型的防火墙规则(即,用于传入VM流量)。您可以在规则中一次指定多个端口,方法是用逗号分隔5000,5044,5601,9200,9300,9600
。
在该规则中,您可能需要指定一个标签(根据您的喜好选择标签的名称,例如docker-elk
,该标签将以您的VM为目标(“目标”列):
在VM的“设置”页面上,将该标签分配给您的VM:
这样做之后,我可以通过端口9200在浏览器中访问Elasticsearch。而且我也不必编辑elasticsearch.yml
文件。
答案 17 :(得分:0)
对于比 6.8 (7.x) 更高的版本,您需要做两件事。
在配置文件elasticsearch.yml
中(对于 debian 及其衍生版本-> /etc/elasticsearch/elasticsearch.yml
)。
network.host
或network.bind_host
设置为:...
network.host: 0.0.0.0
...
或者必须到达的界面
根据elastic.co:
v6.8->应该设置的发现设置。
通过例如
...
# roughly means the same as 1
discovery.zen.minimum_master_nodes: -1
...
v7.x->应该设置的发现设置。
一个节点
discovery.type: single-node
#OR set discovery.seed_hosts : 127.0.0.1:9200
必须配置[ discovery.seed_hosts , discovery.seed_providers , cluster.initial_master_nodes ]中的至少一个。
答案 18 :(得分:0)
就我而言,问题出在Java版本,我之前安装过open-jdk 11
。这就是在启动服务时造成的问题。我更改了它open-jdk 8
,它开始起作用
答案 19 :(得分:0)
我的问题是我无法使用localhost
,我需要将其设置为本地主机的IP地址
network.bind_host: 127.0.0.1
答案 20 :(得分:0)
禁用SELinux对我有用,尽管我不建议这样做-我只是为PoC做的
答案 21 :(得分:0)
请确保在我的情况下打开的端口9200
是一个亚马逊实例,因此当我在安全组中打开该端口时,curl命令就起作用了。
答案 22 :(得分:0)
将您的jdk更新为弹性搜索的最新最低版本。
答案 23 :(得分:0)
为了补充一点,我通过谷歌找到了许多文档,说要将network.host设置为localhost。
这样做让我拒绝了臭名昭着的连接。您必须使用IP地址(127.0.0.1),而不是FQDN。
杰夫
答案 24 :(得分:0)
在使用上面的一些答案之后,不要忘记在apt安装之后,可能需要完全重新启动。