如何在Logstash的MongoDB输出中指定要插入的文件

如何在Logstash的MongoDB输出中指定要插入的文件,mongodb,logstash,Mongodb,Logstash,我在下面的输出配置中进行了修改,但它在MongoDB中插入了原始数据。如何仅插入几个选定字段?对于XDB,我们有一个属性data_points,我可以使用它,但MongoDB插件似乎没有任何这样的功能 mongodb { collection => "logs" database => "test" uri => "mongodb://localhost:27

我在下面的输出配置中进行了修改,但它在MongoDB中插入了原始数据。如何仅插入几个选定字段?对于XDB,我们有一个属性data_points,我可以使用它,但MongoDB插件似乎没有任何这样的功能

            mongodb {
                collection => "logs"
                database => "test"
                uri => "mongodb://localhost:27017"
                codec => line 
                    {
                    enable_metric => "false"
                    format => "data1:%{val1}, data2:%{val2}, data3:%{val3}"
                    }
        }
你可以用Logstash来做这个。prune筛选器的
白名单\u name
设置允许您删除数组中未枚举的所有字段

filter {
  prune {
    whitelist_names => ["field1", "field2", "field3"]
  }
} 
我认为prune过滤器非常酷的一点是,它还允许您输入正则表达式,并删除与正则表达式不匹配的任何字段。因此,与上述内容不同,您可以:

filter {
  prune {
    whitelist_names => ["^field\d+"]
  }
} 

另一个注意事项:默认情况下不会安装修剪过滤器。您必须运行
bin/logstash plugin install logstash filter prune

另一个注意事项:如果您想要logstash添加的字段,如
@timestamp
标记
,或者其他什么,您还必须枚举白名单中的字段。我尝试了这个方法,但仍然缺少一些内容。我将我的源代码标记为http和tcp,并将它们列为白名单,以便根据标记输出它们。问题是我在输出中的任何地方都找不到删除字段选项,无法在插入db之前删除类型。您有什么建议吗?@RimmyMathew-您可以添加与每个“类型”对应的元数据字段,然后删除“类型”字段。然后在输出中,您将使用元数据将不同的文档驱动到不同的输出。我写了一篇博客文章,在上展示了这种方法。免责声明:我是Elastic的咨询工程师。