An [@timestamp] field is automatically added when an event is created. If you do not want it then modify your mutate to remove it
mutate { remove_field => [ "headers", "host", "message", "@version", "@timestamp" ] }
If you think about the ruby code, it splits the http response into an array of four lines, then it calls event.clone for each line. So you end up with the original event and four clones of it, so five lines in the output.
If you look at the post where you copied that code from you will see there is a call to event.cancel which deletes the original event if there are no problems. You could remove the if-else that surrounds it, but do not remove the call itself.