python如何把数据从数据库推送elasticsearch

本文介绍如何使用Python将数据库中的数据推送到Elasticsearch,包括从数据库读取数据、建立Elasticsearch连接及推送数据的步骤,并提供了一个完整的代码示例。
摘要由CSDN通过智能技术生成

引言

工作中常常需要将数据库的数据推送到es用作快速搜索查询,本篇是记录自己对于此需求的学习和python方法实现

从数据库读取数据

一些基本参数变量

sql = 'select * from test.airport_message'
es_host = '127.0.0.1'
es_port = 9200
es_index = 'test_airport_message_idx'
es_type = 'airport_message'
username = '*'
passwd = '*'
gx_time_name = 'gxsj'  # 数据库记录更新时间字段

连接数据库

conn = pymysql.connect("127.0.0.1", "root", "123456", "test")
cur = conn.cursor()

查询数据,构造数据格式,为了防止数据量过大,每次推送2w条。
构造格式为:

[{
   "index": {
   "_id": "xx"}},{
   'a': 'xx', 'b': 'xx'},{
   "index": {
   "_id": "xx"}},{
   'c': 'xx', 'd': 'xx'}] 
cur.execute(sql)
# 获取表结构,以便构造推送数据映射
des = cur.description
table_desc = [item[0] for item in des]
while True:
    rows = cur.fetchmany(20000)
    docs = []
    if not rows:
        break
    for row in rows:
        data = {
   }
        # 本表主键为第一个字段,根据实际情况调整
        ids = str(row[0])
        for i in range(len(tab_desc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值