Supponiamo che l'Oracle schema ha seguito le tabelle e colonne:Aggiornamento complesso documento nidificato elasticsearch utilizzando logstash e JDBC
Country country_id; (Primary Key) country_name; Department department_id; (Primary Key) department_name; country_id; (Foreign key to Country:country_id) Employee employee_id; (Primary Key) employee_name; department_id; (Foreign key to Department:department_id)
E io ho il mio documento elasticsearch in cui l'elemento principale è un Paese e contiene Tutti i reparti in quel Paese che a sua volta contiene tutti i Dipendenti nei rispettivi Dipartimenti.
Quindi la struttura del documento si presenta così:
{ "mappings": { "country": { "properties": { "country_id": { "type": "string"}, "country_name": { "type": "string"}, "department": { "type": "nested", "properties": { "department_id": { "type": "string"}, "department_name": { "type": "string"}, "employee": { "type": "nested", "properties": { "employee_id": { "type": "string"}, "employee_name": { "type": "string"} } } } } } } } }
Voglio essere in grado di avere le query JDBC ingresso separato in esecuzione su ogni tavolo e dovrebbero creare/aggiornare/cancellare i dati nel documento elasticsearch ogni volta che il i dati nella tabella di base sono aggiunti/aggiornati/cancellati.
Questo è un problema di esempio e le tabelle e la struttura dati effettive sono più complesse. Quindi non sto cercando la soluzione limitata a questo.
C'è un modo per raggiungere questo obiettivo?
Grazie.
Sto indovinando potrebbe essere già risolto questo, tuttavia, non si poteva utilizzare una Vista Oracle per combinare i dati richiesti nel formato della struttura del documento (Paese, Dipartimento, Dipendente) e avere come un'unica query JDBC, in questo modo si sarebbe in grado di creare l'ID del documento elasticsearch come il livello univoco più basso (id_dipendente in questo caso) e gestire le modifiche lì? –