首页 > 解决方案 > 根据 Logstash 中的字段插入不同的索引

问题描述

我目前正在使用 Elasticsearch、Logstash 和 Filebeat 7.12 版。我正在使用 Filebeat 读取日志文件,然后将其传递给 Logstash,然后 Logstash 将过滤并插入 Elasticsearch。

我的问题是基于 Logstash 中的过滤器,如何插入 Elasticsearch 中的不同索引?

下面是我的logstash配置:

input {
    beats {
        port => 5044
    }
}

filter { 
    grok {
        match => 
        [
            "message", "(?m)timestamp=%{GREEDYDATA:timestamp} applicationname=%{GREEDYDATA:application_name} %{DATA:type},\"%{DATA:sql_statement}?\",(.*?)",
            "message", "(?m)timestamp=%{GREEDYDATA:timestamp} applicationname=%{GREEDYDATA:application_name} %{DATA:type},\"%{DATA:sql_statement}?\",(.*?),\"%{DATA:username}?\""
        ]
    }
}

output {
    if "DDL" in [type] {
        elasticsearch {
            hosts => ["http://localhost:9200"]
            index => "postgresaudit_ddl" 
        }
    }else{
        elasticsearch {
            hosts => ["http://localhost:9200"]
            index => "postgresaudit" 
        }
    }
}

我试图做“如果 [type] 中的“DDL””,它只是进入 postgresaudit 索引。如何根据类型字段分别在不同的索引中创建文档?

标签: elasticsearchlogstashlogstash-groklogstash-forwarder

解决方案


推荐阅读