📜  用python终端连接elasticsearch cloud - Python(1)

📅  最后修改于: 2023-12-03 15:40:52.770000             🧑  作者: Mango

用Python终端连接Elasticsearch Cloud

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

连接到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的更多功能,请查看官方文档。