我已使用此命令安装了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)
答案 0 :(得分:3)
您安装的是一个Python客户端,用于Python脚本和现有Elasticsearch集群之间的通信。
正如您的评论所述,在您开始阅读的page顶部,它说:
Elasticsearch的官方低级客户端。它的目标是提供 Python中所有与Elasticsearch相关的代码的共同点;因为 它试图获得免费且可扩展的内容。
您可以为客户端配置运行群集的主机和端口,并连接到该群集并在该群集上执行命令。
在您的代码中,您将客户端配置为使用默认设置,该设置假定群集在localhost
上运行,并使用默认的弹性搜索端口9200
。
您需要Install Elasticsearch on a machine,配置并运行它,然后您就可以将客户端连接到群集并与之通信。
答案 1 :(得分:2)
遵循documentation很简单,您应该能够启动elasticsearch
并开始运行。只是为了解决问题,使用pip3 install elasticsearch
不会建立与elasticsearch
的连接。请按照以下步骤设置,安装和开始连接:
安装必要的软件包
由于Elasticsearch
在Java
之上运行,因此您需要安装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'}