wie bereits im Kommentar erwähnt, ich habe eine Lösung für mein Problem kommen. Für mich hatte ich Werte wie foo bar baz
und ich brauchte das extrahieren Das erste Wort konnte ich über das Feld "Advanced → JSON" unter Verwendung des folgenden Skripts eingeben:
{
"script": "(_value.indexOf(' ') > 0 ? _value.substring(0, _value.indexOf(' ')) : _value)"
}
Also, in der Kibana Schnittstelle sieht dies wie folgt aus:
also in Ihrem Fall sollte das Skript wahrscheinlich so etwas wie:
{
"script": "(_value.indexOf(' ') > 0 ? _value.substring(_value.lastIndexOf(' ')) : _value)"
}
Offensichtlich Dies setzt voraus, dass der Teil der Nachricht, den Sie extrahieren möchten, dem letzten Leerzeichen in der Zeichenfolge folgt. Ich habe eine Wegwerf-Java-Klasse geschrieben, um die oben zu testen:
public class Foo {
public static void main(String[] args){
String tester = "Incoming request /api/someaction";
String result = tester.substring(tester.lastIndexOf(" "));
System.out.println(result);
}
}
Soweit ich das beurteilen kann, Sie alle Java-Code in der „Skript“ Schlüssel des JSON Feld verwenden können. Sie sollten also auch in der Lage sein, Regexes mit String.replaceAll oder einer anderen String-Methode für diese Angelegenheit zu verwenden ...
Ich habe dies jedoch nicht getestet. Wenn jemand Informationen dazu hat, können Sie gerne einen Kommentar hinterlassen.
Verwenden Sie Logstash oder etwas anderes? Wenn Logstash, wie sieht Ihre Konfiguration aus? – Val
Ich glaube, dass es einen Weg gibt, den "fortgeschrittenen" JSON-Eingang zu verwenden. Ich untersuche das derzeit auch, konnte aber bisher nichts finden. – exhuma