我在logstash中有以下配置,我可以根据收到的输入JSON在ES中创建动态“document_type”:
elasticsearch {
hosts => ["localhost:9200"]
index => "queuelogs"
document_type => "%{action}"
}
此处,“操作”是我在JSON中收到的参数,根据收到的不同操作创建了不同的document_type。
现在我想要为索引创建做同样的事情,例如:
elasticsearch {
hosts => ["localhost:9200"]
index => "%{logtype}"
document_type => "%{action}"
}
此处,“ logtype ”是我在JSON中收到的参数。
但不知何故,在ES中,它仅将索引创建为“%{logtype}”,而不是根据实际的logtype值。
输入JSON如下:
{
"action": "UPLOAD",
"user": "123",
"timestamp": "2016 Jun 14 12:00:12",
"data": {
"file_id": "2345",
"file_name": "xyz.pdf"
},
"header": {
"proj_id": "P123",
"logtype": "httplogs"
},
"comments": "Check comments"
}
在这里,我试图通过以下方式生成索引:
index => “%{日志类型}”
index => “%{header.logtype}”
但在这两种情况下,Logstash都不会从JSON中替换logtype的实际值。
答案 0 :(得分:0)
您需要像这样指定:
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[header][logtype]}"
document_type => "%{action}"
}