Logstash中ElasticSearch的动态索引

时间:2016-06-20 10:00:16

标签: elasticsearch logstash

我在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的实际值。

1 个答案:

答案 0 :(得分:0)

您需要像这样指定:

elasticsearch {
        hosts => ["localhost:9200"]
        index => "%{[header][logtype]}"
        document_type => "%{action}"
    }