Elasticsearch 索引模板

概述

记录自己在工作中将生产的数据按月保存在ES中(通过logstash采集kafka数据到ES),由于生产环境数据量比较庞大(一天的日志量大概在2500万条左右),为了后期减轻服务器压力,方便我们维护,所以需要对我们的日志进行处理,按月建立不同的ES索引库,能够查询最近6个月的日志,关闭前6个月不用的日志。

创建模板

如果用户每次新建一个索引的时候都需要手动创建mapping非常麻烦,es内部维护了template,template定义好了mapping,只要index的名称被template匹配到,那么该index的mapping就按照template中定义的mapping自动创建。而且template中定义了index的shard分片数量、replica副本数量等等属性。
 

模板样例

1{ 2 "order": 0, // 模板优先级 3 "template": "sample_info*", // 模板匹配的名称方式 4 "settings": {...}, // 索引设置 5 "mappings": {...}, // 索引中各字段的映射定义 6 "aliases": {...} // 索引的别名 7}

settings定义了索引的属性,包括分片数量、副本数量、写入flush时间间隔。

1"settings": { 2 "index": { 3 "refresh_interval": "10s",//每10秒刷新 4 "number_of_shards" : "5",//主分片数量 5 "number_of_replicas" : "2",//副本数量 6 "translog": { 7 "flush_threshold_size": "1gb",//内容容量到达1gb异步刷新 8 "sync_interval": "30s",//间隔30s异步刷新(设置后无法更改) 9 "durability": "async"//异步刷新 10 } 11 } 12 }

编写template,写入es

通过命令 put  _template/[template名]{……}命令写入es

通过命令 get  _template/[template名]查看是否写入template成功。如果template编写错误重新执行put命令覆盖即可

附 自己的template

1PUT /_template/template_access_log 2{ 3 "template": "poc*", 4 "settings": { 5 "index": { 6 "refresh_interval": "10s", 7 "number_of_shards" : "5", 8 "number_of_replicas" : "1", 9 "translog": { 10 "flush_threshold_size": "1gb", 11 "sync_interval": "30s", 12 "durability": "async" 13 } 14 } 15 }, 16 "mappings": { 17 "doc": { 18 "dynamic_templates": [ 19 { 20 "string_as_keyword": { 21 "match_mapping_type": "string", 22 "mapping": { 23 "type": "keyword" 24 } 25 } 26 } 27 ], 28 "properties": { 29 "TRANSAMOUNT": { 30 "type": "double" 31 }, 32 "consumeTime": { 33 "type": "integer" 34 }, 35 "transTime": { 36 "type": "date", 37 "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" 38 } 39 } 40 } 41 }, 42 "aliases" : { 43 "poc" : {} 44 } 45 }

logstash6.5.4配置文件修改

1input { 2 kafka{ 3 group_id=> "logstash_bkq_test001" 4 topics=> "test_bkq" 5 bootstrap_servers=> "192.168.8.21:9092" 6 key_deserializer_class=> "org.apache.kafka.common.serialization.IntegerDeserializer" 7 value_deserializer_class=> "org.apache.kafka.common.serialization.StringDeserializer" 8 auto_offset_reset=> "latest" 9 client_id=> "logstash_bkq_test001" 10 } 11} 12 13filter { 14 json { 15 source => "message" 16 remove_field => ["message"] 17 } 18} 19 20output { 21 elasticsearch { 22 hosts => ["192.168.8.23:9200","192.168.8.24:9200","192.168.8.25:9200"] 23 index => "poc%{+yyyyMMdd}" 24 user => "elastic" 25 password => "******" 26 } 27}

logstash往ES灌数据的时候按照index => "poc%{+yyyyMMdd}" 灌数据。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang