elasticsearch通过组合使用自定模板和动态模板来映射logstash数据

logstash传输给es的数据会自动映射为5索引,5备份,字段都为text的的索引。这样基本上无法进行数据分析。
所以必须将logstash的数据按照既定的格式存储在es中,这时候就要使用到es模板技术了。在es中可以定义了自定义模板和动态模板,之后es会自动将相关索引映射为模板规定的格式。

模板格式如下:

{
  "template":   "tomcat*", 
  "settings": { 
    "index.refresh_interval" : "5s",
    "number_of_replicas":"0",
    "number_of_shards":"3"
 }, 
  "mappings": {
    "_default_": {
      "_all": { 
        "enabled": false
      },
      "dynamic_templates": [
        {
          "strings": {
            "match_mapping_type": "string",
            "unmatch": "data",
            "mapping": { "type": "keyword" } }
        },
        {
          "dates": {
            "match": "time",
            "unmatch": "data",
            "mapping": { "type": "date" } }
        }
      ]
    }
  }
}

其中”template”: “tomcat*”,是设置匹配的索引名称 ,通过在logstash定义字段的output中index字段来配置,譬如 index => “%{[fields][logIndex]}-%{+YYYY.MM.dd}”

通过settings可以设置创建索引时的一些参数,我设置了备份为0,分片为3,刷新间隔5秒

    "settings": { 
    "index.refresh_interval" : "5s",
    "number_of_replicas":"0",
    "number_of_shards":"3"

dynamic_templates就是配置具体的动态模板匹配项
“match_mapping_type”: “string” 是匹配固定的类型
“match”: “time” 匹配字段名为time的数据
“unmatch”: “data” 不匹配字段名为data的数据
mapping 就是将匹配的数据项映射为定义的数据类型

最后还要在logstash的output插件里设置manage_template => true,让数据可以被模板映射

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值