Logstash:在 Elasticsearch 中将不同的 json 字段发送到不同的类型



我有以下格式的 JSON 数据发送到日志存储实例侦听 HTTP 端点

{
    client: "c",
    pageInfo: ["a","b","c"],
    restInfo: ["r","s","t"]
}

我的目标是将此输入作为同一索引中的两种不同类型发送到 elasticsearch 端点;例如

 PUT elasticsearchhost:port/myindex/pageInfo  
       { client: "c", pageInfo: ["a","b","c"] }
 PUT elasticsearchhost:port/myindex/restInfo  
       { client: "c", restInfo: ["r","s","t"] }

我已经尝试在logstash中使用一些过滤器(分裂,突变,grok(,但我无法理解如何执行这种非常特定的拆分,或者我是否也必须在输出部分中修改我的配置

您需要

使用 clone 克隆事件,然后修改克隆。

例如:

filter { 
  clone { clones => ["pageInfo", "restInfo" ]  }
  if [type]=="pageInfo" {
     mutate {
        remove_field => "restInfo"
     }
  }
  if [type] == "restInfo" {
     mutate {
        remove_field => "pageInfo"
     }
  }
}

然后在您的elasticsearch输出中,请务必包含document_type => "%{type}"

最新更新