9

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

我已经阅读了文档,但无法获得太多信息,因为它不是很清楚。

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

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

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

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

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

寻求专家帮助。

4

1 回答 1

12

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

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

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

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

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

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

于 2013-05-10T20:02:16.037 回答