elasticsearch - 为通过 logstash 发送到 Elasticsearch 的每个日志附加一个 TTL 字段

标签 elasticsearch ttl logstash

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

我已经阅读了文档,但没能了解太多,因为它不是很清楚。

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

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

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

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

我知道如何在 Elasticsearch 中激活 TTL 选项。但是我不是很清楚 Elasticsearch 配置文件中必须进行哪些更改。 文档要求查找 mappings 文件夹,但在 elastic search 下载文件夹中没有。

寻求专家帮助。

最佳答案

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

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

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

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

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

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

关于elasticsearch - 为通过 logstash 发送到 Elasticsearch 的每个日志附加一个 TTL 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16486095/

相关文章:

elasticsearch - Logstash 条件输出到 elasticsearch(每个 filebeat 主机名的索引)

search - 上下文建议的索引,例如使用Elasticsearch的Flipkart,亚马逊

Python DNS 解析器和原始 TTL

caching - Varnish 禁令永远留在禁酒令中

c# - 更新 Cosmos DB TTL 容器设置是否会对旧项目产生影响?

image - 使用python 3.6.0在Elasticsearch中存储图像的正确方法

用于 logstash 的 Nginx grok 模式

elasticsearch - 如何在 Kibana、Logstash 和 ElasticSearch 中使用 IP 地址在世界地图中显示计数?

date - 两个字段之间的 Kibana 时间增量

elasticsearch - 在ElasticSearch中查询DateTime条目的最佳设置?