我是 Elasticsearch 的新手,目前正在本地 WSL2 Ubuntu 计算机上使用它。我正在遵循官方 Debian 安装指南,一切似乎都运行良好,但我在测试 Elasticsearch 响应时遇到了问题。
事情是这样的:
sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
curl -X GET localhost:9200
即使 Elasticsearch 正在运行并且我可以在状态检查中看到它,也会发生这种情况。
我已经检查了该服务是否处于活动状态,并且我还确保在使用第一个curl命令进行测试时
ELASTIC_PASSWORD
是正确的。
为什么会发生这种情况,如何修复它,以便我可以运行简单的curl命令而不需要
sudo
?
任何帮助将不胜感激!预先感谢。
我猜您正在使用
sudo
,因为非特权用户无权访问 /etc/elasticsearch/certs/http_ca.crt
中的证书。
无论哪种方式,我都不知道为什么你在运行
-u elastic:$ELASTIC_PASSWORD
而没有 curl
时要删除 sudo
。
使用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
。
请记住,在生产中绝对不建议这样做,但由于您正在访问提供自签名证书的本地主机端点,所以应该没问题。