【es数据库】python 使用Elasticsearch数据库

news/2024/7/7 5:55:15 标签: elasticsearch, 数据库, python

es 数据库

Elasticsearch是一个开源的高扩展性搜索引擎,它可以快速地存储、搜索和分析大量的数据。
使用Python语言和Elasticsearch,可以轻松地创建和操作“数据库”和“数据库表”,而且具备分布式和高扩展性的特点,适用于大规模数据存储与搜索场景。

1. 创建“数据库” | 索引(index)

在Elasticsearch中,“数据库”被封装为索引(Index),可以通过以下代码来创建一个索引:

python"># 首先导入了Elasticsearch模块
from elasticsearch import Elasticsearch

# 创建es数据库句柄
es = Elasticsearch()

# 接着定义了一个索引名称
index_name = "myindex"

# 通过`es.indices.exists()`方法来判断索引是否存在
if not es.indices.exists(index_name):
	# 如果索引不存在,则通过`es.indices.create()`方法来创建索引
    es.indices.create(index=index_name)

2. 创建“数据库表” | 文档类型(doc_type)

在Elasticsearch中,每个索引可以包含多个文档类型(Type),可以通过以下代码来创建一个文档类型:

python"># `es.indices.put_mapping()`方法,在指定的索引上创建了一个名称为`type_name`的文档类型,并定义了文档类型中的字段
es.indices.put_mapping(
   index=index_name, # 在指定的索引index_name上创建
   body={   # 文档中的字段
       "properties": {
           "field1": {
               "type": "keyword"
           },
           "field2": {
               "type": "text"
           }
       }
   },
   doc_type=type_name  # 文档名称为type_name  
)

3. 创建“数据库表字段”

在上述代码中,通过body参数定义了文档类型中的字段。其中,"type": "keyword"表示该字段类型为字符串,且不需要分词。"type": "text"表示该字段类型为字符串,且需要分词。

4. 常用的ES数据库操作

插入数据 | index | res [‘created’]

python">doc_id = 1
doc = {
    "field1": "value1",
    "field2": "value2"
}
res = es.index(index=index_name, doc_type=type_name, id=doc_id, body=doc)
if res["created"]:
    print("Document created successfully")

查询数据 | get | res[’ _source’]

python">res = es.get(index=index_name, doc_type=type_name, id=doc_id)
doc = res["_source"]

更新数据 | update | res[‘result’]

python">doc_id = n;
doc = {
    "field1": "new_value1"
}
res = es.update(index=index_name, doc_type=type_name, id=doc_id, body={"doc": doc})
if res["result"] == "updated":
    print("Document updated successfully")

删除数据 | delete | res[“result”]

python">res = es.delete(index=index_name, doc_type=type_name, id=doc_id)
if res["result"] == "deleted":
    print("Document deleted successfully")

http://www.niftyadmin.cn/n/395622.html

相关文章

Google Play上架aab保姆级教程(纯aab上架/已上架apk转aab上架)

0、上传密钥 & 应用签名密钥 “Google 会使用上传证书验证您的身份,并使用您的应用签名密钥为 APK 签名以进行分发” 以上为官方解释。 2021年8月起,上传google play的应用必须以aab格式,aab的签名流程要比之前apk的复杂一些。需要上传…

msvcr120.dll丢失怎样修复

MSVCR120.dll是Windows操作系统上一个非常重要的动态链接库文件,它包含了一些运行时库函数,被许多应用程序用来进行编译和运行。如果该文件丢失或损坏,很多应用程序就无法正常运行,这可能会带来一些麻烦。本篇文章将详细介绍MSVCR…

K8S常见应用场景(六)

Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。 Kubernetes 这个名字源于希腊语,意为“…

试验SurfaceFlinger 中Source Crop

在 SurfaceFlinger 中,Source Crop 是用于指定源图像的裁剪区域的一个概念。Source Crop 可以理解为是一个矩形区域,它定义了源图像中要被渲染到目标区域的部分。在 Android 中,Source Crop 通常用于实现屏幕分辨率适应和缩放等功能。 在 Sur…

冈萨雷斯DIP第10章知识点

文章目录 10.2 点、线和边缘检测10.2.2 孤立点的检测10.2.3 线检测10.2.4 边缘模型 10.3 阈值处理10.3.4 使用图像平滑改进全局阈值处理10.3.5 使用边缘改进全局阈值处理10.4 使用区域生长、区域分离与聚合进行分割 分割依据的灰度值基本性质是:不连续性和相似性。本…

【Linux驱动】字符设备驱动相关宏 / 函数介绍(module_init、register_chrdev)

驱动运行有两种方式: 方式一:直接编译到内核,Linux内核启动时自动运行驱动程序方式二:编译成模块,使用 insmod 命令加载驱动模块 我们在调试的时候,采用第二种方式是最合适的,每次修改驱动只需…

基于Springboot+Vue的幼儿园管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

Spring Boot Application.properties和yaml配置文件

文章目录 一、全局配置文件概述二、Application.properties配置文件(一)创建Spring Boot的Web项目PropertiesDemo(二)在应用属性文件里添加相关配置1、配置服务器端口号和web虚拟路径2、对象类型的配置与使用(1&#x…