Logstash写入ElasticSearch的Mapping Template

我们使用ElasticSearch时一般需要自己创建ElasticSearch的索引的Mapping,当索引非常多的时候,可能需要配置一个索引模板Template来对类似的索引做统一配置,让索引模板Template中配置匹配索引的规则,来确定该Template会被应用到哪些索引上。

Template配置方式

当Logstash在整合ElasticSearch的时候,会有下面三种方式的Template配置:

1. 使用ElasticSearch默认自带的索引模板

ElasticSearch默认自带了一个名字为”logstash”的模板,默认应用于Logstash写入数据到ElasticSearch使用

  • 优点:最简单,无须任何配置
  • 缺点:无法自定义一些配置,例如:分词,数据类型

2. 在Logstash Indexer端自定义配置索引模板

Logstash的output插件中使用template指定本机器上的一个模板json文件路径,可以在json文件中设置对应的Template模板信息。例如:template => “/tmp/logstash.json”

  • 优点:配置简单
  • 缺点:因为分散在Logstash Indexer机器上,维护起来比较麻烦

3. 在ElasticSearch服务端自定义配置索引模板

由ElasticSearch负责加载模板。这种方式需要在ElasticSearch的集群中的config/templates路径下配置模板json。而且ElasticSearch提供了Restful API接口维护索引模板信息。

  • 优点:维护比较容易,可动态更改,全局生效。
  • 缺点:需要注意模板的命名规则,比较容易通过看Template名字就能够确定模板应用到哪些索引

这里可能使用第三种方式统一管理Template最好,推荐使用第三种方式,但是具体问题具体分析。例如我现在的场景就使用的第二种方式,因为我们的Logstash Indexer和ElasticSearch只有一台服务器,所以在Logstash Indexer端维护Template文件也可以。

模板类型

ElasticSearch的模板类型主要由两种:静态模板和动态模板

1. 静态模板

适合索引字段数据固定的场景,一旦配置完成,不能向里面加入多余的字段,否则会报错

  • 优点:scheam已知,业务场景明确,不容易出现因字段随便映射从而造成元数据撑爆es内存,从而导致es集群全部宕机
  • 缺点:字段数多的情况下配置稍繁琐,针对于每个索引可能需要的模板都不同,很有可能需要配置很多个模板

2.动态模板

适合字段数不明确,大量字段的配置类型相同的场景,可以按照类型规则动态添加新字段,新加字段不会报错。主要需要配置”dynamic_templates”

  • 优点:可动态添加任意字段,无须改动schema
  • 缺点:无标准schema导致数据不规则,如果添加的字段非常多,有可能造成ES集群宕机
  • 需要注意:模板在设置生效后,仅对ES集群中新建立的索引生效,而对已存在的索引及时索引名满足模板的匹配规则,也不会生效,因此如果需要改变现有索引的Mapping信息,仍需要在正确的Mapping基础上建立新的索引,并将数据从原索引拷贝至新索引,变更新索引别名为原索引这种方式来实现。

参考链接:https://birdben.github.io/2016/12/22/Logstash/Logstash%E5%AD%A6%E4%B9%A0%EF%BC%88%E5%85%AD%EF%BC%89elasticsearch%E6%8F%92%E4%BB%B6%E2%80%94%E2%80%94%E8%AE%BE%E7%BD%AEES%E7%9A%84Template/

https://elasticsearch.cn/article/335

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值