Elasticsearch + Logstash:如何在导入时根据现有数据添加字段

Elasticsearch + Logstash: How to add a fields based on existing data at importing time

目前,我正在通过logstash将数据导入Elastic,此时通过读取csv文件。

现在假设我在 csv 中有两个数字字段,年龄和体重。 我需要通过对年龄、体重和另一个外部数据(或函数结果)进行数学运算来动态添加第三个字段;我需要在导入数据时创建第三个字段。

有什么办法吗? 最佳做法是什么?

在所有 Logstash 过滤器部分中,您可以通过 add_field 添加字段,但这通常是静态数据。

如前所述,ruby 过滤器插件可能是您的最佳选择。这是您的管道的示例片段

filter {

     # add calculated field, for example BMI, from height and weight 
    ruby {
        code => "event['data']['bmi'] = event['data']['weight'].to_i / (event['data']['height'].to_i)"
   }
}

或者说,在Kibana中,有Scripted fields可以可视化,但是不能查询的