将通过logstash发送的每个日志附加到TTL字段到Elasticsearch

时间:2013-05-10 15:49:32

标签: elasticsearch ttl logstash

摘要:我想在logstash中附加一个带有日志的TTL字段,然后将它们发送到Elastic搜索。

我已经阅读了文档,但由于不太清楚,因此无法获得更多信息。

这是我在logstash中的配置文件。

input {
  stdin {
    type => "stdin-type"
  }
}

output {
  stdout { debug => true debug_format => "json"}
  elasticsearch {}
}

现在假设对于每个读取的日志,我想附加一个TTL,比如5天。

我知道如何在弹性搜索中激活TTL选项。但是我必须在弹性搜索配置文件中做出哪些更改对我来说不是很清楚。 文档要求查找映射文件夹,但弹性搜索下载文件夹中没有。

寻求专家帮助。

1 个答案:

答案 0 :(得分:12)

如果要将映射放在文件系统上,请查看here。您必须转到config文件夹并在此处创建一个名为mappings的文件夹,另一个名称在mappings内的索引名称。由于logstash默认情况下每天创建一个索引,因此最好使用该文件夹的_default名称,以便映射将应用于所有索引。 您在该文件夹下创建的文件必须具有要应用映射的类型的名称。我不记得logstash使用的确切类型,因此我将使用_default_映射定义。只需调用文件_default_.json并将以下内容放入其中:

{
    "_default_" : {
        "_ttl" : { "enabled" : true }
    }
}

如您所见,该类型的名称必须同时出现在文件名及其内容中。

否则,您可以避免将内容放在文件系统上。您可以创建一个包含自定义映射的index template,如下所示:

{
    "template" : "logstash-*",
    "mappings" : {
        "_default_" : {
            "_ttl" : { "enabled" : true }
        }
    }
}

然后,映射将应用于名称与模板模式匹配的所有索引。如果使用_default_映射定义,则映射将默认应用于将要创建的所有类型。