3 votes

Comment charger Mysql vers Elasticsearch en utilisant python

J'ai un nom de table employees

J'ai besoin de pousser le employees à l'index Elasticsearch en utilisant python

import MySQLdb
import json
from elasticsearch import Elasticsearch
db = MySQLdb.connect("localhost", "admin", "password", "dbname")
cursor = db.cursor()

0voto

Mont Points 172

Voici mon idée rapide

from sqlalchemy import create_engine
import pymysql
import pandas as pd

from elasticsearch import Elasticsearch
from elasticsearch import helpers
#Replaceme
CONSTR = 'mysql+pymysql://root:@127.0.0.1'
sqlEngine       = create_engine(CONSTR, pool_recycle=3600)
dbConnection    = sqlEngine.connect()
df           = pd.read_sql("select * from employees", dbConnection);
rows = df.to_json(orient='records')
es = Elasticsearch()
actions=[]
for item in rows:
    action = {
        #replace me if need to
        "_id": "employee_%s"%item['id'],
        "doc_type": "_doc",
        "doc": item
    }
    actions.append(action)

response = helpers.bulk(es, actions, index="employees", doc_type='_doc')

dbConnection.close()

0voto

Rick James Points 15994

Extraire un fichier CSV ( SELECT .. INTO OUTFILE ) à partir de MySQL, chargez-les dans Elasticsearch.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X