我是 Elasticsearch 的新手,目前正在本地 WSL2 Ubuntu 机器上使用它。我按照官方的 Debian 安装指南进行操作,一切似乎都运行良好,但在测试 Elasticsearch 响应时我遇到了一个问题。
以下是具体情况:
- 当我使用具有 sudo 权限的以下 curl 命令时,我得到了有效的响应并可以确认 Elasticsearch 正在运行:
sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
- 但是,当我尝试像这样的更简单的命令(不带 sudo)时,我得到一个空的响应:
curl -X GET localhost:9200
即使 Elasticsearch 正在运行,也会发生这种情况,我可以在状态检查中看到它。
ELASTIC_PASSWORD
我已经检查该服务是否处于活动状态,并且在使用第一个 curl 命令进行测试时也确保了正确。
为什么会发生这种情况,我该如何修复它,以便我可以运行简单的 curl 命令而不需要sudo
?
任何帮助都将不胜感激!提前致谢。
我猜您正在使用
sudo
,因为非特权用户无权访问中的证书/etc/elasticsearch/certs/http_ca.crt
。无论哪种方式,我不确定为什么在没有的情况下
-u elastic:$ELASTIC_PASSWORD
运行时会丢弃。curl
sudo
端点 (elastic) 不知道您
sudo
在使用时是否提升了curl
权限。我猜想行为的改变是由于缺少用户名/密码。使用 进行调试时要记住的一点
curl
是添加-i
参数以查看从请求返回的 HTTP 代码。我怀疑,您收到的是4xx
与授权相关的代码(可能是401
或403
),因为您发送的请求没有用户名/密码。为了避免需要使用
sudo
来访问/etc/elasticsearch/certs/http_ca.crt
(如果这是您使用的原因sudo
),您可以添加-k
参数以跳过 TLS 证书验证。例如:
curl -k -u elastic:$ELASTIC_PASSWORD https://localhost:9200
。在生产中不建议这样做,但由于您正在访问提供自签名证书的本地主机端点,所以应该没问题。