使用 Python Client 8.0 操作 Elasticsearch 索引
2023-12-09 08:26:28
简介
Elasticsearch 是一个分布式、可扩展的搜索引擎。它可以用于各种各样的用例,包括日志记录、应用程序搜索和机器学习。
Python Client 是 Elasticsearch 的官方低级 Python 客户端。它提供了一个简单的 API 来执行各种 Elasticsearch 操作,包括创建、索引和搜索文档。
安装
要安装 Python Client 8.0,请运行以下命令:
pip install elasticsearch==8.0.0
创建索引
要创建索引,可以使用 create_index
方法。该方法接受一个索引名称和一个映射作为参数。映射定义了索引中文档的结构。
以下示例演示了如何创建一个名为 my-index
的索引:
from elasticsearch import Elasticsearch
es = Elasticsearch()
# 创建一个映射
mapping = {
"properties": {
"title": {
"type": "text"
},
"body": {
"type": "text"
}
}
}
# 创建索引
es.indices.create(index="my-index", body={"mappings": mapping})
索引文档
要索引一个文档,可以使用 index
方法。该方法接受一个索引名称、一个文档类型和一个文档作为参数。
以下示例演示了如何索引一个文档到 my-index
索引:
# 创建一个文档
document = {
"title": "Hello world!",
"body": "This is my first document."
}
# 索引文档
es.index(index="my-index", doc_type="_doc", body=document)
搜索
要搜索文档,可以使用 search
方法。该方法接受一个索引名称、一个查询和一些其他参数作为参数。
以下示例演示了如何搜索 my-index
索引中的文档:
# 创建一个查询
query = {
"query": {
"match": {
"title": "Hello world!"
}
}
}
# 搜索文档
results = es.search(index="my-index", body=query)
# 打印结果
for hit in results['hits']['hits']:
print(hit['_source'])
查询
Python Client 提供了各种查询类型来满足不同的搜索需求。以下是一些最常用的查询类型:
- match查询: 用于匹配文档中特定字段的值。
- term查询: 用于匹配文档中特定字段的精确值。
- range查询: 用于匹配文档中特定字段的值在指定范围内。
- prefix查询: 用于匹配文档中特定字段的值以指定前缀开头。
- wildcard查询: 用于匹配文档中特定字段的值包含指定通配符。
聚合
Python Client 还提供了一系列聚合来对搜索结果进行分组和汇总。以下是一些最常用的聚合:
- terms聚合: 用于根据特定字段的值对文档进行分组。
- histogram聚合: 用于根据特定字段的值将文档分组到桶中。
- date_histogram聚合: 用于根据特定字段的值将文档分组到日期桶中。
- max聚合: 用于返回特定字段的最大值。
- min聚合: 用于返回特定字段的最小值。
Python API
Python Client 提供了一个全面的 Python API 来执行各种 Elasticsearch 操作。以下是一些最常用的 API:
- indices.create(): 用于创建索引。
- indices.delete(): 用于删除索引。
- index(): 用于索引文档。
- get(): 用于获取文档。
- update(): 用于更新文档。
- delete(): 用于删除文档。
- search(): 用于搜索文档。
- count(): 用于计算索引中文档的数量。
总结
Python Client 是一个功能强大的工具,可用于执行各种 Elasticsearch 操作。在本文中,您学习了如何安装和使用 Python Client 8.0 来创建、索引和搜索 Elasticsearch 文档。您还学习了如何使用 Python API 来执行查询、聚合和其他操作。