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可以可视化,但是不能查询的
目前,我正在通过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可以可视化,但是不能查询的