📅  最后修改于: 2023-12-03 15:40:52.770000             🧑  作者: Mango
Elasticsearch是一个分布式搜索和分析引擎。它支持全文搜索、结构化搜索、分析等功能。Elasticsearch Cloud是一个基于云计算的Elasticsearch托管服务。在Python中,我们可以使用Elasticsearch-py来连接Elasticsearch Cloud,并执行各种操作。
在开始之前,我们需要先进行一些准备工作:
1.安装Elasticsearch-py
pip install elasticsearch
2.获取Elasticsearch Cloud的API密钥
在Elastic Cloud console中创建一个帐户并获取API密钥。
连接到Elasticsearch Cloud很简单。我们只需要指定Cloud ID和API密钥即可。以下是示例代码:
from elasticsearch import Elasticsearch
from elasticsearch import helpers
cloud_id = "your-cloud-id-here"
api_key = ("your-api-key-here", "your-api-secret-here")
# 构建连接对象
es = Elasticsearch(cloud_id=cloud_id, http_auth=api_key)
其中,cloud_id
是在Elastic Cloud console中获取的Cloud ID,api_key
是在同一页面中获取的API密钥。
接下来,我们可以使用es
对象执行各种操作,如索引数据、搜索数据等。
索引数据是将数据添加到Elasticsearch Cloud的过程。以下是将文档添加到名为my-index
的索引中的示例代码:
doc = {
"title": "Python连接Elasticsearch Cloud",
"content": "Elasticsearch-py是连接Elasticsearch Cloud的Python包。",
"tags": [
"Python",
"Elasticsearch Cloud",
"Elasticsearch-py"
],
"date": "2022-10-10"
}
res = es.index(index="my-index", body=doc)
其中,doc
是要索引的文档,index
是要索引到的索引的名称。
搜索数据是从Elasticsearch Cloud中检索数据的过程。以下是从名为my-index
的索引中搜索标题包含Python
的文档的示例代码:
res = es.search(index="my-index", body={"query": {"match": {"title": "Python"}}})
for hit in res['hits']['hits']:
print(hit['_source']['title'])
其中,body
是搜索查询的DSL(领域特定语言),query
是查询的核心部分。我们可以将DSL部分嵌入到Python字典中,然后将其传递给search
方法的body
参数。
以下是从名为my-index
的索引中删除所有标题包含Python
的文档的示例代码:
res = es.delete_by_query(index="my-index", body={"query": {"match": {"title": "Python"}}})
print("{} documents deleted".format(res['deleted']))
其中,delete_by_query
是删除查询匹配的所有文档的方法。
在本文中,我们学习了如何连接到Elasticsearch Cloud,并索引、搜索和删除数据。我们还了解了如何使用Elasticsearch-py包来简化连接过程。如果您想深入了解Elasticsearch Cloud和Elasticsearch-py的更多功能,请查看官方文档。