2015-10-09 24 views
7

Ho un database mysql con coppie di tabelle, voglio migrare i dati mysql in ElasticSearch. È facile migrare l'intero database in ES tramite un processo batch. Ma come dovrei aggiornare ES da mysql realtime. Ad esempio, se ci fosse un'operazione di aggiornamento in mysql, dovrei fare la stessa operazione in ES. Ho ricercato mysql binLog che può riflettere qualsiasi modifica da mysql. Ma devo analizzare la sintassi binLog con ES, penso che sia davvero doloroso. Grazie! (lo stesso caso con Solr)come migrare i dati mysql in ElasticSearch in tempo reale

risposta

7

c'è un progetto esistente che prende il tuo binlog, la trasforma e le navi a elasticsearch, è possibile controllare fuori a: https://github.com/siddontang/go-mysql-elasticsearch

Un altro potrebbe essere questo: https://github.com/noplay/python-mysql-replication.

Nota, tuttavia, quale che si sceglie, è una buona pratica pre-creare il proprio indice e mappature prima di indicizzare il proprio file. Questo ti dà più controllo sui tuoi dati.

+0

Grazie mille! go-mysql-es è fantastico! Solo una domanda: hai idea di come funziona l'operazione Upsert? Ad esempio, ho due tabelle t1 (uid, name), t2 (uid, age) che hanno lo stesso id e le due tabelle corrispondono ad un indice. Ma quando una tabella veniva aggiornata, sovrascriveva (rimuoveva) il record esistente in ES. In realtà spero che questo aggiornamento non venga sovrascritto. – Jack

1

La migliore soluzione open source sarebbe this. È possibile eseguire ciò come una riga di comando e fornire anche la logica incrementale nel comando.

GO through this sessione per avere un'idea completa.

+0

Grazie! ma non è quello che sto cercando. Il documento mostra solo come ottenere dati incrementali, ma ho bisogno di monitorare i dati cancellati e i dati aggiornati. – Jack