2017-02-24 5 views
0

Gibt es eine Möglichkeit in logstash Parsen Felder automatisch auf den XML-Inhalten auf Basis zu definieren, wenn eine XML-Datei mit logstash XML-Filter Parsen?automatisch Felder definieren, wenn XMLs mit logstash

Zum Beispiel lassen Sie uns sagen, ich habe die folgende XML (kopiert von https://www.w3schools.com/xml/xml_xpath.asp):

<?xml version="1.0" encoding="UTF-8"?> 

<bookstore> 

<book category="cooking"> 
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
</book> 

<book category="children"> 
    <title lang="en">Harry Potter</title> 
    <author>J K. Rowling</author> 
    <year>2005</year> 
    <price>29.99</price> 
</book> 

<book category="web"> 
    <title lang="en">XQuery Kick Start</title> 
    <author>James McGovern</author> 
    <author>Per Bothner</author> 
    <author>Kurt Cagle</author> 
    <author>James Linn</author> 
    <author>Vaidyanathan Nagarajan</author> 
    <year>2003</year> 
    <price>49.99</price> 
</book> 

<book category="web"> 
    <title lang="en">Learning XML</title> 
    <author>Erik T. Ray</author> 
    <year>2003</year> 
    <price>39.95</price> 
</book> 

</bookstore> 

Ich möchte es analysieren, mit logstash wo logstash automatisch zum Beispiel bookstore.book.title genannt ein Feld definiert mit der Wert "Everyday Italian" und ein Feld namens bookstore.book.title.lang mit dem Wert "en" und so weiter, ohne dass alles manuell definiert werden muss (mit xpath). Das Problem ist, dass ich versuche, verschiedene XML-Dateien mit verschiedenen und komplizierten Strukturen zu analysieren, so dass das Definieren einer separaten Struktur für jede Datei keine Option ist.

Antwort

0

Ich habe das Problem gefunden. Logstash nativ zerlegt die Attribute der XML-Datei (also was ich brauchte wird eigentlich von Logstash out of the Box unterstützt). Das Problem war, dass in meinen XML-Dateien das Ende eines XML-Attributs (z. B. </book>) in einer separaten Zeile war, so dass das Attribut <book> für logstash "defekt" war und dies einen XML-Parse-Fehler verursachte. Um das Problem zu lösen, musste ich der Eingabe einen mehrzeiligen Codec hinzufügen, so dass sich jedes zu analysierende Attribut vollständig in einer einzigen Zeile befindet.

Verwandte Themen