2016-04-18 8 views
1

Ich versuche, mysql-Datenbank mit elasticsearch zu indizieren. Betrachten Sie das Beispiel Mapping:Wie verschachtelte mysql-Objekte in elasticsearch mit logstash indexiert werden?

{"blog": 
    {"properties": 
    {"id": "string"} 
    {"author": "string"} 
    {"time_created": } 
    {"author_info": 
     {"author_name":} 
     {"author_sex":} 
    } 
    {"posts": 
     {"post_author":} 
     {"post_time":} 
    } 
    } 
} 

Ich habe drei Tabellen, die author_info, Blog und Post sind. Wie kann ich diese Datensätze mit einer verschachtelten Struktur in Elastic indizieren? Ich kann keine Dokumente darüber finden. Danke

+0

Yangrui, Haben Sie dieses Problem lösen? Ich habe das gleiche Problem, und ich kann die verschachtelten MySQL-Daten nicht in elasticsearch mit einer sehr ähnlichen Struktur wie Ihre erhalten. Vielen Dank. – Birdy

Antwort

0

Im sql Teil der logstash Eingabe könnten Sie versuchen, die Felder mit den verschachtelten Namen, die Sie in elasticsearch wollen, auszuwählen. Unten ist ein kleines Beispiel, wie es aussehen könnte.

input { jdbc {

statement => "SELECT id as blog.properties.id, author as blog.properties.author,..... from blog inner join properties inner join posts" 

} }

+0

Ich bin mit elasticsearch nicht sehr vertraut. Können Sie angeben, wie kann ich SQL-Abfrage formatieren, um es zu strukturieren? – Yangrui

+0

Bearbeitete Antwort mit einem Beispiel unter Verwendung der logstash-jdbc-Eingabe - sollte näher an der Stelle sein, an der Sie sich befinden, als elasticsearch-jdbc in der ursprünglichen Antwort zu verwenden. – bbergvt

+0

@bbergvt Dies funktioniert nicht, es zeigt MySQL Syntax Fehler beim Versuch, so zu verschachteln: Wählen Sie Autor als blog.properties.author - Gibt es einen anderen Vorschlag? – Birdy

Verwandte Themen