Elasticsearch是一个免费的、开源的、高度可用的搜索和分析引擎,建立在Apache Lucene项目上。Elasticsearch以JSON格式存储其数据,使其非常容易使用。
它提供了一个简单而强大的REST API,用于执行一系列任务,包括创建文档、监测集群健康状况等。
Python是最流行的编程语言之一,它往往能很好地补充Elasticsearch。
在本指南中,我们将探讨如何使用Elasticsearch Python客户端与Elasticsearch集群进行交互。
环境设置
在连接Elasticsearch Python客户端之前,最好确保我们已经配置好环境。
第一步:安装Elasticsearch
第一步是在我们的系统上安装和设置Elastisearch集群。在本指南中,我们将使用Ubuntu服务器。
首先,更新你的软件库。
sudo apt-get install update
导入Elasticsearch的PGP密钥。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
安装需要的apt-transport-https软件包。
sudo apt-get install apt-transport-https
保存版本库。
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
更新并安装Elasticsearch
sudo apt update
sudo apt install elasticsearch
启用并启动该服务。
sudo /bin/systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
一旦服务启动并运行,对Elasticsearch的端点进行curl操作。
curl http://localhost:9200
如果该服务正在运行,你应该看到如下的输出。
{
"name" : "ubuntu2004",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "lUk9qSQtSaSfZXMsyxQdyg",
"version" : {
"number" : "7.15.0",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "79d65f6e357953a5b3cbcc5e2c7c21073d89aa29",
"build_date" : "2021-09-16T03:05:29.143308416Z",
"build_snapshot" : false,
"lucene_version" : "8.9.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
第2步:安装Python
下一步是安装Python。在Ubuntu/Debian上,打开终端,输入下面的命令,确认已安装的Python版本。
python --version
如果你已经安装了Python 3,你应该看到类似于下图的输出。
Python 3.10.0
如果没有,使用命令安装Python 3
sudo apt-get install python3.10
第3步:安装Elasticsearch客户端
最后一步是安装Elasticsearch客户端。我们可以使用pip工具来做这件事,因为。
首先安装pip为
sudo apt-get install python3-pip
最后,以如下方式安装Elasticsearch客户端。
pip3 install elasticsearch

连接Elasticsearch客户端
一旦我们的环境被设置和配置好,我们就可以使用Elasticsearch客户端与elastic进行交互。
首先,创建一个python文件。
touch elastic.py
vim elastic.py
确保集群已经启动并运行
在与Elasticsearch集群进行交互之前,使用requests模块确保服务已经启动并运行。
import requests
substring = "You Know, for Search".encode()
response = requests.get("http://127.0.0.1:9200")
if substring in response.content:
print("Elasticsearch is up and running!")
else:
print("Something went wrong, ensure the cluster is up!")
保存并运行该文件为
python elastic.py
输出
Elasticsearch已经启动并运行了!
连接到Elasticsearch集群
为了连接到Elasticsearch集群,我们可以实现下面这个简单的脚本。
import requests
from elasticsearch import Elasticsearch
substring = "You Know, for Search".encode()
response = requests.get("http://127.0.0.1:9200")
if substring in response.content:
es = Elasticsearch([{"host": "localhost", "port": 9200}])
用Python获取文档
要使用Python客户端获取文档,你可以这样做。
res = es.get(index="index-name", id=1)
print(res['_source'])
上面的例子应该会返回关于被查询文档的详细信息。
索引一个文档
要对一个文档进行索引,请使用以下代码。
from datetime import datetime
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200}])
doc = {
"author": "document-author",
"text": "A text document",
"timestamp": datetime.now()
}
res = es.index(index="sample-index", id=2, body=doc)
print(res['result'])
删除一个文档
要删除一个文档
res = es.delete(index="index-name", id=1)
结束
本指南讨论了如何使用Elasticseach python客户端,用Python设置和使用Elasticsearch。