我如何在Python中使用Elasticsearch?

1,002 阅读3分钟

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。