1
我有以下JSON作爲輸入到我的Logstash管道:嵌套JSON解析在Logstash
{
"action": "UPLOAD",
"who": "123",
"when": "2016 Jun 14 12:00:12",
"data": {
"doc_id": "2345",
"doc_name": "xyz.pdf"
},
"header": {
"proj_id": "P123",
"logtype": "userlogs"
},
"comments": "Check comments"
}
我想執行以下操作:
1)解析此JSON -使得i有一個新的字段「user」,值爲JSON中靜態字符串「User-」與「who」字段的連接。例如 - 「User-123」
2)僅存儲ES中的相關字段 - 例如ElasticSearch中的action,who,when,header.proj_id,header.logtype。並且留下其餘的字段而不存儲它們。
我嘗試使用以下配置,但目前它將我的JSON的所有字段存儲到彈性搜索中。
input {
rabbitmq {
type => "businesslogs"
host => "localhost"
exchange => "auditexchange"
exchange_type => "fanout"
queue => "auditqueue"
auto_delete => false
durable => true
ack => true
codec => json
}
}
output {
if [type] == "businesslogs" {
elasticsearch {
hosts => ["localhost:9200"]
index => "businesslogs"
document_type => "%{action}"
}
}
}
謝謝...它爲我工作。也有可能,我可以指定一個字段作爲臨時變量使用,而不是存儲到ES中。例如 - 我可以使用「action」字段來指定ES的「document_type」,而不是將它用作索引的字段。 – SuperCoder
是的,你可以添加一個字段然後刪除它,或者簡單地創建一個'[@metadata] [tmp_field]'字段,它不會被保存在ES中。 – Val