数据同步MySQL -> Elasticsearch
warning:
这篇文章距离上次修改已过246天,其中的内容可能已经有所变动。
以下是一个简化的Python代码示例,用于将MySQL数据同步到Elasticsearch。请确保已经安装了pymysql
、elasticsearch
和elasticsearch-dsl
库。
from pymysql import connect
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Document, Integer, Keyword, Date, Boolean, connections
connections.create_connection(hosts=['localhost:9200'])
class MySQLDocument(Document):
title = Text(fields=['keyword'])
author = Keyword()
published_date = Date()
class Index:
name = 'mysql_index'
# 连接MySQL数据库
mysql_conn = connect(host='localhost', user='your_username', password='your_password', db='your_db')
# 使用cursor()方法获取操作游标
cursor = mysql_conn.cursor()
# 查询语句
query = "SELECT id, title, author, published_date FROM books;"
# 执行SQL语句
cursor.execute(query)
# 获取所有结果
rows = cursor.fetchall()
# 关闭游标
cursor.close()
# 关闭连接
mysql_conn.close()
# 将MySQL数据插入到Elasticsearch
for row in rows:
doc = MySQLDocument()
doc.id = row[0]
doc.title = row[1]
doc.author = row[2]
doc.published_date = row[3]
doc.save()
print("数据同步完成")
这段代码首先建立了到MySQL和Elasticsearch的连接,定义了一个Elasticsearch文档模型,然后从MySQL中检索数据,并将其插入到Elasticsearch索引中。这个过程可以在服务器定时任务中运行,以保持数据的同步。
评论已关闭