预处理后使用 logstash 从 MySQL 导入数据到 elasticsearch

Import data from MySQL to elasticsearch with logstash after preprocessing

我正在尝试使用 logstash 将数据从 MySQL 导入到 elasticsearch,一切正常,并且我已成功导入所有数据。但是,MySQL 中的一个名为 "metadata" 的字段遵循这样的特定模式 "firstname_lastname_yyyy-MM-dd HH:mm:ss" 因此例如这是它可能采用的值之一 "Mark_Karlos_2018-02-23 15:19:55",在当这个字段按原样导入到 Elasticsearch 时,我想做的是将这个字段作为 Elasticsearch 中的三个字段"first_name"、"last_name"、"time"。这可以用 Logstash 配置文件来完成吗?如果没有,还有其他方法吗?

您可以使用 grok 过滤器:

grok {
    match => {"metadata"=> "%{GREEDYDATA:first_name}_%{GREEDYDATA:last_name}_%{TIMESTAMP_ISO8601:time}"}
}

帮助您使用 grok 过滤器:

Official documentation

Existing patterns

To test your patterns