【发布时间】:2021-07-19 13:58:29
【问题描述】:
我有一个logstash 配置,它从 MySQL 数据库获取数据并将数据发送到elasticsearch。
这是我的配置:
input {
jdbc {
clean_run => true
jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://IP:PORT/DATABASE"
jdbc_user => "myuser"
jdbc_password => "mypassword"
use_column_value => true
tracking_column => "field1"
schedule => "*/2 * * * *"
statement => "SELECT * FROM test"
}
}
**need something here before the 'output' section ?**
output {
elasticsearch {
hosts => ["http://ELASTICSEARCH_IP:PORT"]
index => "myindexname"
document_id => "%{field1}"
}
}
一切正常,但我需要添加一些值依赖于其他列值的列,因此我尝试编写 Python 脚本来执行此操作。在elasticsearch 发送数据之前,有没有办法执行 python 脚本来添加/编辑列?我需要filter 选项吗?
编辑: 例如,我使用我的 python 脚本来:
- 根据日期时间字段创建周数列。
- 根据日期时间字段创建月份数列。
- 编辑“名称”列并替换一些特殊字符(“/”、“-”、“:”等...)
- 基于另一列创建线性趋势线。
- 根据另一列创建移动平均线。
- 替换某些列值(例如:将“y”替换为“yes”,将“n”替换为“no”)。
【问题讨论】:
-
我不认为你可以在 Logstash 管道配置中执行 python 脚本,但你可以在
ruby编程中编写自己的过滤器插件。这是elastic.co/guide/en/logstash/current/plugins-filters-ruby.html的方法 -
您可以在
fitler块内执行ruby代码,但根据您想要做什么,您可以使用logstash 拥有的众多本机过滤器之一。例如,如果您想根据其他字段的值添加一个新字段,您可以使用mutate过滤器来实现。用一个你想做什么的例子来更新你的问题。 -
我刚刚编辑了我的问题,以放置一些示例来说明我的 python 脚本的作用。谢谢你的帮助 :) 如果没有可能使用 python,我会转向 Ruby 代码,但我对这种语言不满意。
标签: python elasticsearch logstash mysql-connector