如何使用Logstash筛选器根据其他列的某些行添加新列?

如何使用Logstash筛选器根据其他列的某些行添加新列?,logstash,elastic-stack,Logstash,Elastic Stack,假设我有一个如下所示的csv文件: cummulated_values 0 2 5 10 17 cummulated_values, values 0, 0 2, 2 5, 3 10, 5 17, 7 我如何使用logstash过滤器添加一个新的“values”列,其中的行定义为values[n]:=cummulated_values[n]-cummulated_values[n-1],其中0

假设我有一个如下所示的csv文件:

cummulated_values
0
2
5
10
17
cummulated_values, values
0, 0
2, 2
5, 3
10, 5
17, 7

我如何使用logstash过滤器添加一个新的“values”列,其中的行定义为values[n]:=cummulated_values[n]-cummulated_values[n-1],其中0
    csv { autodetect_column_names => true }
    ruby {
        code => '
            c = event.get("cummulated_values").to_i
            @values ||= c
            event.set("values", c - @values)
            @values = c
        '
    }

您需要保留事件的顺序,并且需要所有事件都通过同一个ruby过滤器实例。因此,您必须将pipeline.workers设置为1,并验证如果pipeline.ordered被设置,那么它将被设置为自动或true(默认值为auto,因此如果您没有设置它,您就可以了)。

谢谢您的回答,但是是否可以避免使用ruby筛选器?(我从未使用过ruby)您可能可以使用聚合过滤器来实现它,但这只是一个包装器,用于运行ruby代码。