这4种Python更新Elasticsearch数据的方法你都会吗?

Python 玩转 Elasticsearch的一些技巧与经验 在Python项目中,我们可以选择以下几个库与Elasticsearch交互:elasticsearch-py:官方提供的低级客户端(Official low-level client for Elasticsearch),直接且灵活。elasticsearch-dsl:基于的高级封装,简化了很多操作,更适合日常使用。django-elasticsearch-dsl:为 Django 用户设计,基于elasticsearch-dsl,实现了与Django的深度集成。 阅读详情

大家好,我是菜鸟哥!

今天总结一下通过 Python 更新 Elasticsearch 数据的几个方法

Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。它被用作全文检索、结构化搜索、分析以及这三个功能的组合

全局更新

在 Elasticsearch 中,通过指定文档的 _id, 使用 Elasticsearch 自带的 index api 可以实现插入一条 document , 如果该 _id 已存在,将直接更新该 document

因此,通过 index API 来对已有的文档实现更新,其实是进行了一次 reindex 的操作如 ES 中已有数据如下

通过代码将其更新:

es.index(index="test", doc_type="doc", id="dfebcXcBCWwWKoXwQ2Gk", body={
            "name": "Python编程实战",
            "num": 5})

修改后结果

通过这种方法修改,因为是 reindex 过程,所以当数据量或者 document 很大的时候,效率非常的低

局部更新

update

Elasticsearch 中的 update API 支持根据用户提供的脚本去实现更新

Update 更新操作允许 ES 获得某个指定的文档,可以通过脚本等操作对该文档进行更新。

可以把它看成是先删除再索引的原子操作,只是省略了返回的过程,这样即节省了来回传输的网络流量,也避免了中间时间造成的文档修改冲突。

在 Python 中可以直接通过包装好的接口来更新

es.update(index="test", doc_type="doc", id="4Z6XcXcBChYTHL1ZdwjL", body={"doc": {"name": "Jerry"}})

注意 body 参数,我们需要添加 doc 或者 script 变量来指定修改的内容

增加字段:

es.update(index="test", doc_type="doc", id="4Z6XcXcBChYTHL1ZdwjL", body={"doc": {"name": "Jerry", "age": 25}})

运行完之后,在 kibana 上查看结果

搜索更新

update_by_query

update_by_query,顾名思义,这种更新方式,即通过查询再更新。

该方法的优点是可以指定某些数据,然后达到更新的目的

在 ES 中,我们通过 update_by_query 中的 query 和 script 来实现先查询再更新的机制

在上面的操作中:query 字段,表示我们要查询的条件,根据该条件找到对应的数据script 字段包含以下关键字:

  • source 是将要执行的脚本内容;

  • lang 表示的是当前脚本的语言*;

  • param 则是脚本执行的参数;

参考详情:https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-painless.html

批量更新

在实际需求中,面对最多的还是批量更新

当然你也可以通过 for 循环一条一条来更新,不过这种方法效率太低了。

尤其是面对数据量很大的时候,那真的是急死人..

好在 ES 有提供批量操作的接口 bulk

在 Python 中可以直接导入使用

from elasticsearch.helpers import bulk

那么在 bulk 中如何使用 update 呢?请看代码

  actions = []
  for item in data_list:
     _id = item.get("_id")
     doc = item.get("doc")
     index_action = {
            '_op_type': 'update',
            '_index': index_name,
            '_type': "doc",
            '_id': _id,
            'doc': doc
     }
     actions.append(index_action)

 if actions:
     bulk(es, actions)

可以看到有个 doc 的参数,和上面介绍的 update 方法类似,doc中的值便是我们需要修改的字段内容

_op_type 为操作类型为update,表明是更新的操作

以该种方式组合的 index_action 组成数组,通过 bulk 便能实现批量更新 !

以上便是通过 Python 更新 Elasticsearch 的几种方法

个人推荐通过 update 接口或者 bulk 批量来做更新,你学废了吗?

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注我们哦!

推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片
python使用elasticserch进行混合搜索构建知识库 在搜索时,Elasticsearch 会根据查询词的词频和文档中各个词语的词频来计算文档的相关性得分,从而排序返回搜索结果。在 Elasticsearch 中,KNN 搜索通常用于基于向量的相似性搜索,例如基于词嵌入向量或其他类型的向量来查找最相似的文档或项。在混合搜索中,可以在不同方式的搜索加入权重,进行去权重的相加,从而得到一个更好的结果,这个权重参数更多的需要结合实际场景进行设置。待写入数据存储在json文件中,里面是query和answer的对子。 阅读详情

相关推荐

【ElasticSearch笔记】使用Python生成ES DSL语句

将传统的JSON DSL语句,映射为Python类、对象操作,使其两者相互转换互通,减少手动编写JSON DSL语句的繁琐,提高可维护性。

木子家有小可爱的博客 1587

Python连接es笔记三之es更新操作

这一篇笔记介绍如何使用 Python 对数据进行更新操作。

woaimx_1314的博客 1565

如何使用python访问Elasticsearch并实现大批量查询

问题背景: 近期的工作中,获取应用日志数据时,发现采用的是elk架构的日志服务器,需要访问ElasticSearch服务器来查询所需要的日志数据 自己也是第一次接触elk,因此走了不少的弯路,主要遇到的问题有: 1、Python如何连接es服务器——elasticsearch库 2、如何发送查询语句,获取查询结果——DSL查询语言 3、查询结果较多时,如何进行查询和保存——scroll方法 4、网络异常/查询失败时,如何自动重连——try+catch+while语法 在爆肝了几个晚上之后,总算把以上的全部问

狸克先生的笔记本 7783

Python更新Elasticsearch数据方法大全

今天总结一下通过 Python 更新 Elasticsearch 数据的几个方法Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。...

小詹学python的博客 1009

基于Scrapy与Elasticsearch的免佣金房源垂直搜索引擎实战

垂直搜索引擎是一种针对特定领域或行业进行深度信息检索的技术系统。其核心原理在于通过聚焦的数据采集、结构化的索引构建和精准的查询匹配,为用户提供比通用搜索引擎更专业、更高效的搜索体验。在工程实践中,垂直搜索引擎的技术价值在于能够整合分散的行业数据,解决信息不对称问题,并可通过定制化算法优化搜索结果。典型的应用场景包括电商比价、招聘信息聚合、学术文献检索以及本地服务发现等。本文以构建一个聚合免佣金或低佣金房源的垂直搜索引擎为例,详细阐述了如何利用Scrapy框架进行数据抓取,并结合Elasticsearch实现

WGH100817的博客 516

Elasticsearch的介绍 以及使用python操作es详细步骤

一. 什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful w

数据知道的博客 4万+

通过 Python 更新 Elasticsearch 数据方法大全

大家好,我是村长 今天总结一下通过Python 更新 Elasticsearch 数据的几个方法 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合 全局更新 在 Elasticsearch 中,通过指定文档的 _id, 使用 Elasticsearch 自带的 index api 可以实现插入一条 document , 如果该 _id 已存在,将直接更新该 document 因此,通过i

Python编程与实战的博客 944

python3实现elasticsearch批量更新数据

废话不多说,直接上代码! updateBody = { query:{ range:{ write_date: { gte: 2019-01-15 12:30:17, lte: now } } }, script: { inline: ctx._source.index = params.index, params: { index: 211 }, lang:painless } }

python更新es数据_使用python更新ElasticSearch中的文档时出错es.更新()

使用elasticam搜索下面的elasticam命令在默认情况下使用elasticam搜索文档。在res = es.update(index='its', doc_type='vents', id=txid, body={"doc":{"f_vent" :{"b_vent":rx_buffer}}})更新后的文档如下所示。在^{pr2}$我从Kibana4 discover tab复制了这个文件...

weixin_39516956的博客 328

要配置西门子G120XA变频器实现**端子启停**和**Modbus RTU(485)频率给定

如有问题,可通过STARTER软件在线诊断Modbus通讯状态。要配置西门子G120AX变频器实现。

微:13763355074 4858

win11禁止更新,草履虫教程

本文介绍了彻底禁止Windows 11系统更新的组合方法,包括禁用核心服务、修改注册表、关闭计划任务和使用组策略(专业版适用)。作者特别提醒,禁止更新会影响系统安全性,建议实体机保持更新,仅虚拟机等特殊情况下使用这些方法。同时强调即使禁用更新,也应定期手动检查重要安全补丁。文章最后附上了作者的个人网站信息。

testwzc1的博客 562

python es 指定id更新数据_Python Elasticsearch API操作ES集群

环境Centos 7.4Python 2.7Pip 2.7 MySQL-python 1.2.5 Elasticsearc 6.3.1Elasitcsearch6.3.2知识点调用Python Elasticsearh APIPython Mysqldb使用DSL查询与聚合Python 列表操作代码#!/usr/bin/envpython#-*-coding:utf-8-*-#minyt...

weixin_39813009的博客 485

Ego-Planner实战避坑指南:从环境搭建到仿真运行

本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。

weixin_29232507的博客 700

用python批量更新es数据根据id_Python Elasticsearch批量操作客户端

基于Python实现的Elasticsearch批量操作客户端by:授客 QQ:10335531221.代码用途Elasticsearch客户端,目的在于实现批量操作,如下:<1> 批量插入数据<2> 批量更新文档字段值<3> 批量新增文档字段值<4> 批量删除数据<5> 批量复制数据<6> 批量去除冗余数据2.测试环境Win...

weixin_39754603的博客 1083

DeepSeek提示词实战:从零到百的AI角色扮演指南(附100+场景模板)

本文提供了一份详尽的DeepSeek提示词实战指南,重点讲解AI角色扮演的核心技巧。通过“角色扮演四要素法”和五大核心场景模板,帮助用户从零开始掌握如何设计高质量提示词,有效提升AI输出的深度与精度,并附赠100+实用场景模板供参考。

weixin_29305337的博客 583

某10kV纺织厂供电系统设计【CAD图纸源码+Word文档】

本文详细介绍了设计变电所原始资料,负荷统计,基于负荷统计给出了变压器的选型,变电所主接线方式的设计、高低压母线、电缆的技术要求、短路电流的计算以及相关电气设备的保护参数及保护定值的计算、安全措施的规定。

weixin_761237174的博客 2744

【es数据库】python 使用Elasticsearch数据库以及shell命令

python 常用es数据库操作

weixin_49929829的博客 1814

uniapp - 热更新提示:WGT安装包中manifest.json文件不存在 | unexpected EOF!报错详细解决,完美搞定WGT安装包中WWW目录下manifest.json不存在问题

uniapp,安卓android,苹果ios,热更新,热更新code:-1202报错,,WGT热更新报错,uniapp热更新wgt出现报错manifest.json文件不存,uniapp安卓苹果软件热更新时出现错误unexpected EOF!如何解决,怎么解决热更新wgt报错,app新版本下载安装报错WGT安装包中manifest.json文件不存在,WGT安装包中WWW目录下manifest.json不存在,uniapp热更新报错安装失败[-1201]:WGT/WGTU文件格式错误,uniapp-wgt

✅ 精选推荐文章 1万+

es用python增加字段_elasticsearch之python操作

总结使用python对于elasticsearch的常用操作安装pip install elasticsearch2. 连接fromelasticsearch import Elasticsearches= Elasticsearch([{'host':'49.232.6.227' , 'port':9200}], timeout=3600)# 添加验证# http_auth=('xiao', ...

weixin_39535752的博客 865

ESP32-C3模组上跑通HTTPS分次传输文件(1)

ESP32-C3模组上跑通HTTPS分次传输文件(1)

phmatthaus的专栏 761

【ARM Trace32(劳特巴赫) 高级篇 20 -- SNOOPer 使用介绍】

在 Lauterbach TRACE32 调试系统中,Snooper是一种特殊的监视工具,它能够在不中断处理器执行的情况下监视和记录特定内存地址的数据变化。这对于系统级调试、性能分析、数据流监视以及实时系统的问题追踪特别有用,尤其是在无法使用中断的情况下。当你设置了一个或多个Snooper时,TRACE32 硬件将不断地监视指定的内存地址,一旦发生了读写操作,就会将相关信息记录下来。这样你就可以看到某个地址的数据是什么时候以及如何被修改的,而不会影响目标系统的运行。

CodingCos的博客 2770

python es 数据库 ik_Centos7 搭建ES搜索引擎,并通过go-mysql-elasticsearch 实现数据同步...

目录[-]Centos7 搭建ES搜索引擎,并通过go-mysql-elasticsearch 实现数据同步导语: 随着信息量的不断增加,数据库的压力也不断增加,那么mysql 对于我们全文查找帮助甚微,为何这样说呢。不要急着反驳我,你或许觉得”% like “ 这些也可以完成全文检索。那么我们来看一下,对于全文检索,数据库单表数据量肯定是非常大的,你通过like 这些语句进行查询,毫无疑问是非常...

weixin_39906130的博客 230

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python多方式操作elasticsearch介绍

​ Elasticsearch DSL(Domain Specific Language 领域特定语言)是 Elasticsearch 官方提供的一个 Python 客户端库,它允许开发者以一种更加 Pythonic 和直观的方式与 Elasticsearch 进行交互和查询。DSL 不是一种编程语言,而是一种专门针对某一领域(如 Elasticsearch 查询语言)设计的语言。在 Elasticsearch 中,DSL 用于构建复杂的搜索查询、聚合操作和过滤条件。

wt334502157的博客 2085

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Elasticsearch学习之三】Elasticsearch 搜索引擎案例

环境  虚拟机:VMware 10   Linux版本:CentOS-6.5-x86_64   客户端:Xshell4  FTP:Xftp4  jdk8  elasticsearch-2.2.0 第一步:获取数据主流搜索引擎,会使用爬虫,来获取网站的html数据,常用的工具有nutch,Python(主流),wget(c语言)这里使用wget模拟#安装wgetyum install wget #...

weixin_30252709的博客 397
上一篇: 谷歌发布新编程语言,专治SQL各种“不服”
下一篇: 看腻了杨幂,热巴,快来抓取上千张美女图片,古装美女看个够
菜鸟学Python
博客等级 码龄9年 8083粉丝 571原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值