【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数据库 的相关文章

  • 如何替换 Pandas Dataframe 中不在列表中的所有值? [复制]

    这个问题在这里已经有答案了 我有一个值列表 如何替换 Dataframe 列中不在给定值列表中的所有值 例如 gt gt gt df pd DataFrame D ND D garbage columns S gt gt gt df S 0
  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 在 Elasticsearch python 客户端中使用 SQL Access

    我正在尝试使用 python 客户端进行弹性搜索 以使用 SQL 访问进行弹性搜索来查询索引 我想使用sql语法查询索引 我如何指定elasticsearch必须读取SQL语法 def searchText text t1 time tim
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的

随机推荐

  • 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 可以轻松地创建和操作 数据库 和 数据库表 而且具备分布式和高扩展性的特点 适用