无法建立新连接:[Errno 111]连接被拒绝(elasticsearch)

时间:2016-09-12 09:49:59

标签: python-2.7 elasticsearch

我已使用此命令安装了elasticsearch:pip install elasticsearch 安装完成后,我执行了以下命令:

>>> from datetime import datetime
>>> from elasticsearch import Elasticsearch
# by default we connect to localhost:9200
>>> es = Elasticsearch()
# create an index in elasticsearch, ignore status code 400 (index already     exists) #but when I run this instruction:
>>> es.indices.create(index='my-index', ignore=400) // HERE IS THE PROBLEM

我收到此错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "elasticsearch/client/utils.py", line 69, in _wrapped
return func(*args, params=params, **kwargs)
File "elasticsearch/client/indices.py", line 110, in create
params=params, body=body)
File "elasticsearch/transport.py", line 327, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "elasticsearch/connection/http_urllib3.py", line 105, in perform_request
raise ConnectionError('N/A', str(e), e)
elasticsearch.exceptions.ConnectionError:   ConnectionError(<urllib3.connection.HTTPConnection object at 0x7f847a72ab10>:    Failed to establish a new connection: [Errno 111]     Connection refused) caused by:       NewConnectionError(<urllib3.connection.HTTPConnection object at    0x7f847a72ab10>: Failed to establish a new connection: [Errno 111] Connection    refused)

2 个答案:

答案 0 :(得分:3)

您安装的是一个Python客户端,用于Python脚本和现有Elasticsearch集群之间的通信。

正如您的评论所述,在您开始阅读的page顶部,它说:

  

Elasticsearch的官方低级客户端。它的目标是提供   Python中所有与Elasticsearch相关的代码的共同点;因为   它试图获得免费且可扩展的内容。

您可以为客户端配置运行群集的主机和端口,并连接到该群集并在该群集上执行命令。

在您的代码中,您将客户端配置为使用默认设置,该设置假定群集在localhost上运行,并使用默认的弹性搜索端口9200

您需要Install Elasticsearch on a machine,配置并运行它,然后您就可以将客户端连接到群集并与之通信。

答案 1 :(得分:2)

遵循documentation很简单,您应该能够启动elasticsearch并开始运行。只是为了解决问题,使用pip3 install elasticsearch不会建立与elasticsearch的连接。请按照以下步骤设置,安装和开始连接:

安装必要的软件包

由于ElasticsearchJava之上运行,因此您需要安装Java Development Kit(JDK)。您可以通过在终端上运行以下命令来检查是否安装了Java

$ java -version

如果您没有java,则可以通过以下方式安装默认的JDK:

$  sudo apt install openjdk-8-jre-headless 

运行java -version来检查java是否已安装

要允许通过HTTPS访问您的存储库,您需要安装APT传输程序包:

$ sudo apt install apt-transport-https

下载并安装Elasticsearch(在Ubuntu上)

首先,使用wget命令以获取公钥(from the documentation now)更新Elasticsearch存储库的GPG密钥:

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

将存储库添加到您的系统中:

$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

现在,首先更新软件包索引,然后运行安装程序来安装elasticsearch

$ sudo apt update
$ sudo apt install elasticsearch

启动Elasticsearch

Elasticsearch在您启动之前不会运行。另外,重新启动计算机时,由于elasticsearch服务不会自动启动,因此需要重新运行。

要重新加载systemd配置,请运行:

$ sudo systemctl daemon-reload

启用elasticsearch服务:

$ sudo systemctl enable elasticsearch.service

现在,您可以启动elasticsearch

$ sudo systemctl start elasticsearch.service

此时,elasticsearch将在每次重新引导系统时启动。

要测试设置,请尝试在浏览器的网址栏上运行http://localhost:9200/。您应该在屏幕上看到一些JSON数据转储。更好的是,在您的终端上尝试:

$ curl localhost:9200

这将完成设置,安装以及如何启动elasticsearch服务。现在,您可以尝试在终端上运行命令,并且一切正常。

>>> from datetime import datetime
>>> from elasticsearch import Elasticsearch
>>> es = Elasticsearch()
>>> es.indices.create(index='my-index', ignore=400)
{'acknowledged': True, 'shards_acknowledged': True, 'index': 'my_index'}