Logstash - 一个输入 - 多个输出

问题描述 投票:1回答:2

我有一个文件包含许多json对象如下:

{“浏览器”:“Chrome”,“版本”:“45.0.2454.99”,“插件”:[{“插件”:“Flash”,“版本”:“11.2.4.3”},{“插件”:“ Firebug“,”版本“:”1.5.6.0“}],”存储“:[{”存储“:”LS“,”时间“:106},{”存储“:”WS“,”时间“:167 }]}

是否可以在logstash中创建三个以下索引?

  • 浏览器索引:浏览器,版本
  • 插件索引:插件,版本
  • 存储索引:存储,时间
logstash
2个回答
1
投票

是的,这是可能的,但需要一些工作。

您需要克隆{}每个事件,从该副本中不需要的克隆中删除字段(请参阅prune {}),然后将每个克隆定向到单独的输出{}节。

现在,真正的问题是'为什么'?除非您有一些需要此问题的安全性或数据保留问题,否则我建议您不要这样做。


1
投票

是的,这是可能的。在高级别,可以使用以下方法:

  1. 使用clone创建输入数据的多个副本。
  2. 克隆将为每个副本添加“类型”,然后您可以使用它来处理具有不同过滤器的文档的不同副本。
  3. 在输出定义中,添加if / else语句以检测'type',并使用它来将文档的不同副本定向到不同的输出。

这个blog post演示了上述步骤,几乎没有其他增强功能。

另一种可能的方法是使用pipeline-to-pipeline communication (beta)

免责声明:我是Elastic的咨询工程师。

© www.soinside.com 2019 - 2024. All rights reserved.