2015-10-09 2 views
7

Ich habe eine MySQL-Datenbank mit paar Tabellen, ich möchte die MySQL-Daten zu ElasticSearch migrieren. Es ist einfach, die gesamte Datenbank über einen Batch-Job zu ES zu migrieren. Aber wie sollte ich ES von MySQL Realtime aktualisieren. Wenn es eine Update-Operation in MySQL gab, dann sollte ich die gleiche Operation in ES tun. Ich recherchierte mysql binLog, die alle Änderungen von MySQL widerspiegeln können. Aber ich muss binLog auf ES-Syntax parsen, ich denke, es ist wirklich schmerzhaft. Vielen Dank! (der gleiche Fall mit Solr)Wie migsql Daten zu ElasticSearch Echtzeit migrieren

Antwort

7

Es ist ein bestehendes Projekt, das Ihre binlog nimmt, verwandelt sie und Schiffe es Elasticsearch, können Sie es Besuche bei: https://github.com/siddontang/go-mysql-elasticsearch

Ein anderes diese sein würde: https://github.com/noplay/python-mysql-replication.

Beachten Sie jedoch, dass es sinnvoll ist, den Index und die Zuordnungen vor der Indexierung Ihres binlogs zu erstellen. Das gibt Ihnen mehr Kontrolle über Ihre Daten.

+0

Vielen Dank! go-mysql-es ist großartig! Nur eine Frage: Hast du eine Idee, wie es funktioniert Upsert Operation? z. B. habe ich zwei Tabellen t1 (uid, name), t2 (uid, age), die dieselbe ID haben und die beiden Tabellen einem Index entsprechen. Wenn jedoch eine Tabelle aktualisiert wurde, würde sie den vorhandenen Datensatz in ES überschreiben (entfernen). Eigentlich hoffe ich, dass das Update nicht überschrieben wird. – Jack

1

Die beste Open-Source-Lösung wäre this. Sie können dies als Befehlszeile ausführen und auch die inkrementelle Logik im Befehl angeben.

GO durch this Sitzung, um eine vollständige Idee zu erhalten.

+0

Danke! aber ich suche nicht danach. Das Dokument zeigt nur, wie inkrementelle Daten abgerufen werden, aber ich muss die gelöschten Daten und aktualisierten Daten überwachen. – Jack