输出到 ElasticSearch 多个索引和映射

有时,你需要在 ElasticSearch 中输出到多个索引,或者在它们滚入时具有要应用于新索引的自定义映射。

有两种方法可以应用自定义映射。一种方法是上传 ElasticSearch 模板。请参阅 ElasticSearch 文档。另一种方法是在 elasticsearch {} 输出中指定映射。这就是这里显示的内容。

output {
  if [type] == 'metrics' {
    # The 'metrics' index rotates weekly.
    # The 'metrics-mapping.json' file defines the custom mappings.
    elasticsearch {
      hosts              => [ 'localhost' ]
      index              => "metrics-%{xxxx.ww}"
      manage_template    => true
      template           => "/etc/logstash/metrics-mapping.json"
      template_overwrite => true
    }
  }
}

这会将 metrics 事件输出到 ElasticSearch 上的 metrics- 索引,它将使用 ISO 周每周轮换一次。用于新索引的模板定义为此配置的一部分。定义模板具有将字段类型强制为统一类型的优点。这在较大的配置中很有用,其中多种类型可能尝试将字段定义为稍微不同的数据类型。

此方法在登台和 QA 环境中很有用,因为 ElasticSearch 模板由 LogStash 代码定义,不必作为 ElasticSearch 集群设置的一部分单独配置。