18. ElasticSearch系列之批量插入与更新

这篇具有很好参考价值的文章主要介绍了18. ElasticSearch系列之批量插入与更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍工作中Python版常用的高效ES批量插入、更新数据方式

1. 批量插入
import pandas as pd
from elasticsearch import helpers

actions = list()
count = 0
for index, item in merged_df.iterrows():
    // 过滤nan值
    filted_item = dict(filter(lambda x: pd.notna(x[1]),item.items()))
    action = {
        "_op_type": "index", // index update
        "_index": "community_summary", // 索引名
        "_id": item['id'], // 文档ID
        "_source": filted_item // 文档值
    }
    actions.append(action)
    if len(actions) == 1000:
        // 批量写入
        helpers.bulk(es12_client.elastic_client, actions)
        count += len(actions)
        print(count)
        actions.clear()
if len(actions) > 0:
    helpers.bulk(es12_client.elastic_client, actions)
    count += len(actions)
    print(count)
    actions.clear()
2.批量更新

批量更新只需要改动action的以下内容即可

 action = {
	'_op_type': 'update', // 此处改为update
        '_index': item['index'],
        '_id': item_['_id'],
        'doc': {'estate_type': item['映射物业类型']} // key值改为doc即可
}

欢迎关注公众号算法小生或沈健的技术博客文章来源地址https://www.toymoban.com/news/detail-509534.html

到了这里,关于18. ElasticSearch系列之批量插入与更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用saveOrUpdateBatch实现批量插入更新数据

    saveOrUpdateBatch 是 Hibernate 中的一个方法,可以用来批量插入或更新数据。这个方法的参数是一个 List,里面可以存储多个实体对象。当 Hibernate 执行这个方法时,会检查每个实体对象是否存在主键,如果存在主键就执行 update 操作,否则执行 insert 操作。 使用 saveOrUpdateBatch 的代

    2024年02月11日
    浏览(74)
  • Mybatis批量插入/更新性能优化思路

            最近在做数据写入服务的性能优化,主要是基于Mybatis-Plus实现一套批量写数据的服务,不过该服务是支持整个平台所有需要持久化的业务实体。所以这种服务不仅仅有insert操作还有update的操作。根据以往的MySQL数据库写入经验,主要总结了两套批量插入、批量插入

    2024年04月25日
    浏览(42)
  • JAVA elasticsearch批量插入

    目录 耐心看,多看代码中写的注释,keyid是文档中的_id 1.导入包 2.插入格式 3.插入类 --------附录(新增,删除,更新,插入等) 将对象转换为map 创建map --------附录(新增,删除,更新,插入等)

    2024年02月08日
    浏览(43)
  • Elasticsearch 批量插入文档

    本文介绍Elasticsearch中通过单次请求实现批量插入文档。这种方式可以提升性能,通常打开和关闭连接代价比较高,因此最好多次请求仅做一次。 下面示例我们假设系统已经有了索引\\\"myIndex\\\",类型为\\\"person\\\",且映射有name和age两个属性。 简单批量插入 当批量插入所有文档都属于

    2024年02月11日
    浏览(62)
  • 批量插入或更新数据(MyBatis-plus框架)

    目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础类,比如封装了BaseEntity去集成,那么这样使用会出问题 方式二:on duplicate key (推荐) 4.注意 5.常见问题  插入数据时,我们经常会遇到这

    2024年02月04日
    浏览(88)
  • ElasticSearch中批量操作(批量查询_mget、批量插入删除_bulk)

    有时候可以通过批量操作来减少网络请求。如:批量查询、批量插入数据。 当某一条数据不存在,不影响整体响应,需要通过found的值进行判断是否查询到数据。          在Elasticsearch中,支持批量的插入、修改、删除操作,都是通过_bulk的api完成的。 请求格式如下:(

    2024年02月12日
    浏览(49)
  • Elasticsearch批量插入数据 java api

    在java代码开发中一般通过client api来对es进行CRUD操作。在想es插入数据时,有时候需要对数据进行批量插入。这时候可以使用bulk来实习批量插入操作,创建一个BulkRequest,接着遍历数据列表,在BulkRequest中添加每一条数据的IndexRequest。由于IndexRequest是插入单条数据,因此每一次

    2024年02月11日
    浏览(55)
  • Mysql 实现批量插入对已存在数据忽略或更新

    对已存在的数据进行 忽略/更新 ,需要唯一索引/主键。 唯一索引可为多个字段的联合索引,比如根据我提供的sql中,我需要``name + age`不重复,则可把这2个字段联合创建为唯一索引 创建联合唯一索引的sql 批量插入对已存在数据忽略 批量插入对已存在数据更新 笔者这里只举

    2024年02月15日
    浏览(46)
  • 批量插入千万数据到Elasticsearch之bulkProcessor

    1.下面是我的代码,之前测试400万的数据到es成功,后面到生产数据1300万的数据导入es的时候出现连接超时错误,io错误; 2.遇到的问题连接超时和io问题,这是因为发起的线程太多了上面我设置了10个线程,一个线程5000的数据,.setBulkActions(5000)  .setConcurrentRequests(10) 因为线程

    2024年02月04日
    浏览(48)
  • Elasticsearch 根据条件批量更新数据

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包