1.问题描述
当尝试连接时报错,报错内容为:
elastic_transport.ConnectionError: Connection error caused by: ConnectionError(Connection error caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7fd808b179d0>: Failed to establish a new connection: [Errno 111] Connection refused))
这个错误表明你的Python脚本无法连接到Elasticsearch服务。错误ConnectionRefusedError: [Errno 111] Connection refused
通常意味着:
-
Elasticsearch服务没有运行
-
Elasticsearch运行在不同的端口或主机上
-
防火墙或网络设置阻止了连接
2.解决方案
(1)首先确保Elasticsearch正在运行
在终端运行:
sudo systemctl status elasticsearch
提示系统上没有安装Elasticsearch服务
(2)接下来安装Elasticsearch
对于Ubuntu/Debian系统,在终端执行下列代码:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
(3)启动并启用Elasticsearch服务
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
(4)验证安装
curl -X GET "localhost:9200/"
当看到类似这样的输出说明就可以了:
{
"name" : "user-R8424-G12",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "OSRkQoNcSHWTfTkk3UiJlw",
"version" : {
"number" : "7.17.28",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "xxxxx",
"build_date" : "2025-02-20T09:05:31.349013687Z",
"build_snapshot" : false,
"lucene_version" : "8.11.3",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
(5)安装完成后,回到你的Python程序,确保你的连接代码使用的是正确的地址:
from elasticsearch import Elasticsearch
# 对于本地安装
es = Elasticsearch("http://localhost:9200")
# 对于Docker安装(如果Docker运行在另一台机器)
# es = Elasticsearch("http://your-host-ip:9200")
# 测试连接
if es.ping():
print("成功连接到Elasticsearch")
else:
print("无法连接到Elasticsearch")