2015-10-09 32 views
7

Çift tabloları olan bir mysql veritabanım var, mysql verilerini ElasticSearch'e taşımak istiyorum. Tüm veritabanını toplu iş ile ES'ye taşımak kolaydır. Ama ES'i mysql gerçek zamanlı olarak nasıl güncellerim. mysql'de bir güncelleme işlemi varsa, ES'de aynı işlemi yapmalıyım. mysql'den herhangi bir değişikliği yansıtabilecek mysql binLog'u araştırdım. Ama ben binLog ES sözdizimini ayrıştırmak zorundayım, sanırım gerçekten acı verici. Teşekkürler! (solr ile aynı durum)mysql verilerini ElasticSearch gerçek zamanlı olarak geçirme

cevap

7

Elasticsearch onu ve gemi onu dönüştüren, senin binlog alır varolan projesi yok, sen de bunu kontrol edebilirsiniz.

Ancak, hangisini seçerseniz seçin, dizininizi dizine eklemeden önce dizininizi ve eşlemelerinizi önceden oluşturmak iyi bir uygulamadır. Bu, verileriniz üzerinde daha fazla kontrol sağlar.

+0

Çok teşekkür ederim! go-mysql-es harika! Sadece bir soru: Upsert operasyonu nasıl yapar? örneğin iki tablo var t1 (kullanıcı adı, adı), t2 (kullanıcı kimliği, yaş) aynı kimliğe sahip ve iki tablo bir dizine karşılık geliyor. Ancak bir tablo güncellendiğinde, ES'deki mevcut kaydın üzerine yazılır (kaldırılır). Aslında umarım bu güncelleme üzerine yazmaz. – Jack

1

En iyi açık kaynak kodlu çözüm this olacaktır. Bunu bir komut satırı olarak çalıştırabilir ve komutta artımlı mantığı da oluşturabilirsiniz.

Tam bir fikir edinmek için this oturumuna göz atın. https://github.com/noplay/python-mysql-replication: Bir tane bu bir olurdu https://github.com/siddontang/go-mysql-elasticsearch

:

+0

Teşekkürler! ama aradığım şey değil. Belge yalnızca artan verileri nasıl alacağımı gösterir, ancak silinen verileri ve güncellenmiş verileri izlemem gerekir. – Jack