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

2023-10-27

es 数据库

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

ES数据库保存数据的格式是文件形式的吗?

ES是一种文档数据库,它并不像关系型数据库一样将每张表的每条记录都保存在表里面,而是将所有文档存储在一个索引中。每个文档都是一个JSON结构,包含多个字段。ES还支持对文档进行全文检索和聚合查询等高级功能。

在存储上,ES将每个索引分成多个分片,每个分片都是一个Lucene实例。每个文档被存储到其中一个分片中,根据文档ID生成一个唯一标识符来定位分片。为了提高性能,ES会在内存中缓存热点数据,并使用文件系统缓存来减少IO操作。

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

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

# 首先导入了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),可以通过以下代码来创建一个文档类型:

# `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’]

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’]

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

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

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”]

res = es.delete(index=index_name, doc_type=type_name, id=doc_id)
if res["result"] == "deleted":
    print("Document deleted successfully")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【es数据库】python 使用Elasticsearch数据库 的相关文章

随机推荐

  • GDB常用指令

    摘抄整合 勿喷 GDB r run 执行程序 n next 下一步 不进入函数 s step 下一步 会进入函数 b breakponit 设置断点 l list 查看源码 c continue 继续执行到下一断点 bt backtrace
  • Android AIDL使用详解

    1 什么是aidl aidl是 Android Interface definition language的缩写 一看就明白 它是一种android内部进程通信接口的描述语言 通过它我们可以定义进程间的通信接口 icp interproce
  • C++ Primer 第Ⅱ部分笔记

    1 向算法传递函数 1 1向排序算法传递二元谓词 定义isSHorter方法 bool isShorter const int i const int j return i
  • C++中deque的用法(超详细,入门必看)

    博主简介 Hello大家好呀 我是陈童学 一个与你一样正在慢慢前行的人 博主主页 陈童学哦 所属专栏 C STL 如果本文对你有所帮助的话 希望可以点赞 收藏 支持一下哦 期待你的关注 一起成长哟 前言 Hello各位小伙伴们好 欢迎来到本
  • Spring事务源码详解-spring原码(二)

    上篇文章介绍了事务开启 前面介绍了解析adviors spring事务源码详解 spring原码 一 https blog csdn net ke1ying article details 131360060 事务源码 先从缓存里获取 主要
  • django view.py error 'function' object has no attribute 'objects' 解决办法

    view py中函数和app的名字重复了 请def一个和app名字不一样的函数名 问题就解决了 参考 http stackoverflow com questions 28471404 attributeerror function obj
  • Qt 编译一直死循环问题

    Qt 编译一直死循环问题 有时候Qt编译项目时 一直编不过 查看一下编译窗口 发现一直在循环 输出如下 C soft Qt5 11 5 11 1 mingw53 32 bin qmake exe o Makefile PalmQtLib P
  • 数据分析利器Python——爬虫(含爬取过程、Scrapy框架介绍)

    文章目录 一 基础知识 1 定义 2 基本架构 二 URL管理模块 三 网页下载模块 Python中的requests模块 四 网页解析模块 1 结构化网页解析 2 BeautifulSoup使用步骤 2 1 创建BeautifulSoup
  • Kubernetes服务访问-Nodeport、Loadbalancer和Ingress

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 本文翻译自 https medium com google cloud kubernetes nodeport vs loadbalancer vs ingress whe
  • stm32低功耗休眠模式下使用看门狗wdt

    最近一个项目在用stm32f103 发现stm32一旦开启看门狗 就关不了 进入低功耗模式后 看门狗也重启 不使用看门狗非常危险 网上看了好多资料也查不到解决方案 后来自己想到一个可以进入低功耗又可以使用看门狗的方案 在这里给大家分享 我自
  • android之媒体硬解OMX的实现

    转自 http blog csdn net vincent blog article details 7578112 android的多媒体部分采用的编解码标准是OMX 当然这个标准是用于硬件编解码的 软件编解码在这里我就不说了 直接从st
  • layui调用php接口,layui三级联动【PHP版】

    前言 今天在写城市三级联动的时候发现 当选择某个选项为空的时候 无法清空选项信息 所以特此做个记录 也好给需要这个功能的小伙伴一些启示和参考 重点描述前端如何操作 JS请求可写公共方法调用 第一准备工作 准备城市信息SQL 第二前端页面 L
  • ipmitool工具安装教程

    1 下载ipmitool 1 8 18 tar gz或ipmitool 1 8 18 tar bz2的安装包至本地 2 解压安装包 tar jxvf ipmitool 1 8 18 tar bz2 或 tar zxvf ipmitool 1
  • 《2020年AI新基建发展白皮书》重磅发布,展示百度智能云多个落地案例

    随着实体经济尤其是传统行业智能化转型升级需求的扩大 AI 在生产生活各领域的规模化部署与渗透正在加速 AI 新基建 带来的时代机遇受到广泛关注 1月20日 国家工业信息安全发展研究中心发布了 2020年 AI 新基建发展白皮书 这是国内首个
  • html mailto 乱码,终极解决sendmail & mutt 邮件乱码问题[sh]

    时间 2018 11 25 阅读 3 230 次 标签 分享 配置 问题 自从上次把所有站点https后 一直没怎么看服务器 这两天突然发现所有从服务器自动发出来的邮件全部乱码 实在让我强迫症发作 今天终于得空赶紧研究一翻 系统 Cento
  • PHY- PHY芯片概述

    1 PHY概述 关于Internet Protocal的分层模型可以参考文章 Internet Protocal OSI模型中的网络分层模型 下面我们讲讲底层以太网控制器和收发器的知识 其主要是处理OSI模型中的物理层和链路层的事情 在CA
  • 学习要按部就班进行,不功利,当做乐趣进行就行了。

    这段时间 回老家工作了 有点浮躁 急于求成了 也有点摆烂了 不过在老家就业 也不代表将来不失业 也不是自己家开的公司 哈哈 所以 还是要按部就班进行 不功利 最优化进行就行了 学习时长能完成就是成功 当做乐趣就可以了
  • 字符串01--替换空格

    字符串01 替换空格 jz02 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请实现一个函数 将一个字符串中的每个空格替换成 20 例如 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Ha
  • makefile的一些技巧总结

    1 运行目录存在相同名称文件或文件目录 比如log 则make log报错 在makefile开头加入 PHONY log 2 默认命令 需要遵循Makefile语法 bin sh语法 2 1 bin sh语法 需要反斜杠 保证一行执行完成
  • 【es数据库】python 使用Elasticsearch数据库

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