You can use gsub API to change the pipe "|" to space and the use GROK to extract it.
For example:
filter {
grok {
match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}"]
}
}
The above configuration is worked on me with your log. Hope this can help you.