From 595e0b4d4d3f5d2d2da46cde970be69e4aa6752e Mon Sep 17 00:00:00 2001 From: Oleg Date: Thu, 29 Aug 2019 13:31:32 +0300 Subject: [PATCH] Add nested items support Signed-off-by: Oleg Selin --- lib/logstash/outputs/clickhouse.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/logstash/outputs/clickhouse.rb b/lib/logstash/outputs/clickhouse.rb index ea675e2..abb59a6 100644 --- a/lib/logstash/outputs/clickhouse.rb +++ b/lib/logstash/outputs/clickhouse.rb @@ -131,16 +131,23 @@ def mutate( src ) @mutations.each_pair do |dstkey, source| case source when String then - scrkey = source - next unless src.key?(scrkey) - - res[dstkey] = src[scrkey] + if source.include?('][') + srcval = src.dig(*(source[1..-2].split(']['))) + else + srcval = src.dig(source) + end + next if srcval.nil? + res[dstkey] = srcval when Array then - scrkey = source[0] - next unless src.key?(scrkey) + if source[0].include?('][') + srcval = src.dig(*(source[0][1..-2].split(']['))) + else + srcval = src.dig(source[0]) + end + next if srcval.nil? pattern = source[1] replace = source[2] - res[dstkey] = src[scrkey].sub( Regexp.new(pattern), replace ) + res[dstkey] = srcval.sub( Regexp.new(pattern), replace ) end end res