Was ist der beste Weg, Daten aus Oracle / relationalen Tabellen in die elastische Suche zu indizieren?

8

Welche Möglichkeiten gibt es, große Daten von Oracle DB zum elastischen Such-Cluster zu indizieren? Die Anforderung besteht darin, 300 Millionen Datensätze einmal in mehrere Indizes und auch inkrementelle Aktualisierungen mit täglich etwa 1 Million Änderungen zu indexieren.

Ich habe das JDBC-Plugin für elasticsearch Fluss / Feeder ausprobiert, beide scheinen im Inneren zu laufen oder erfordern eine lokal ausgeführte elastische Suchinstanz. Bitte lassen Sie mich wissen, ob es eine bessere Option gibt, den Elastic Search Indexer als eigenständigen Job (wahrscheinlich auf Java-Basis) auszuführen. Irgendwelche Vorschläge werden sehr hilfreich sein. Danke.

    
Rakesh Shiriyara 15.12.2014, 14:20
quelle

2 Antworten

9

Wir verwenden ES als Berichts-DB, und wenn neue Datensätze in SQL geschrieben werden, führen wir die folgende Aktion aus, um sie in ES zu übernehmen:

  1. Schreiben Sie den Primärschlüssel in eine Warteschlange (wir verwenden rabbitMQ)
  2. Rabbit nimmt den Primärschlüssel (wenn es Zeit hat) auf und fragt die Beziehungs-DB ab, um die benötigten Informationen zu erhalten, und schreibt dann die Daten in ES

Dieser Prozess funktioniert gut, da er sowohl neue Daten als auch alte Daten verarbeitet. Für alte Daten schreiben Sie einfach ein schnelles Skript, um 300M Primärschlüssel in Hase zu schreiben und fertig!

    
jhilden 16.12.2014, 22:52
quelle
5

Es gibt viele Integrationsoptionen - ich habe einige aufgeführt, um Ihnen einige Ideen zu geben, die Lösung hängt jedoch wirklich von Ihren spezifischen Ressourcen und Anforderungen ab.

  1. Oracle Golden Gate untersucht die Oracle DB-Transaktionsprotokolle und füttert sie in Echtzeit nach ES.
  2. ETL zum Beispiel Oracle Data Integrator könnte nach einem Zeitplan ausgeführt und ausgeführt werden Daten aus Ihrer Datenbank, wandeln Sie sie um und senden Sie sie an ES.
  3. Erstellen Sie Trigger in der Oracle DB, so dass Datenaktualisierungen mit einer gespeicherten Prozedur in ES geschrieben werden können. Oder verwenden Sie den Trigger, um Flags in eine Tabelle "changes" zu schreiben, die von einem externen Prozess (z. B. einer Java-Anwendung) überwacht wird und zum Extrahieren von Daten aus der Oracle DB verwendet wird.
  4. Holen Sie sich die Anwendung, die in die Oracle DB schreibt, um auch ES zu füttern. Idealerweise sollten Ihre Anwendung und Oracle DB lose gekoppelt sein. Verfügen Sie über eine Integrationsplattform, die die Nachrichten an ES und Oracle weiterleiten kann?
Olly Cruickshank 15.12.2014 15:47
quelle