python 从数据库导入数据到elasticsearch
import pymysql
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
# 连接 MySQL
conn = pymysql.connect(
host='localhost',
user='root',
password='FiroRegePUE0000idB3',
database='car',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
# 连接 Elasticsearch
es = Elasticsearch(['http://localhost:9200'])
# 创建 Elasticsearch 索引
index_name = 'articles'
if not es.indices.exists(index=index_name):
es.indices.create(index=index_name, ignore=400)
# 获取 MySQL 数据
with conn.cursor() as cursor:
sql = 'SELECT * FROM yj_ask_1'
cursor.execute(sql)
articles = cursor.fetchall()
# 将 MySQL 数据导入 Elasticsearch
actions = []
for article in articles:
action = {
'_index': index_name,
'_id': article['id'],
'_source': {
'title': article['title'],
'content': article['content']
}
}
actions.append(action)
bulk(es, actions)
# 关闭连接
conn.close()
es.transport.close()