1、使用背景
软件运行过程中产生的日志数据或者其他周期性输出的数据,如果集中在一个索引中,会导致Elasticsearch集群的磁盘分配不均衡,其中某个节点的数据量超过阈值而进入只读状态。并且在数据量大的情况下对存放过久,实际意义不大的数据进行维护的时候难度非常大,单个索引内容过大也会影响查询效率。
2、使用方式
2.1创建ES数据模板
通过logstash同步数据的时候,没提前创建索引指定数据类型,会同步成字符串索引。在Elasticsearch中无法对字符串进行范围查询和排序,因此需要创建模板并指定非字符串类型的字段的数据类型。
在kibana中创建索引方式:
PUT _template/template_search //模板名称
{
"order": 0,
"template" : "search*", //应用的索引名称前缀
"settings" : {
"number_of_shards" : 1 //分片数量
},
"mappings" : {
"properties" : {
"fullTime": { //字段名称
"type": "date", //字段类型
"format": "yyyy-MM-dd HH:mm:ss.SSS" // 时间类型指定格式
},
"use_time": { //字段名称
"type": "integer" //字段类型
}
}
}
}
2.2在logstash中绑定模板
进入logstash的conf目录,编辑logstash.conf文件。在output的elasticsearch中添加一行,绑定2.1中创建的模板template_name => "模板名称"。 注意:模板名称需要加上引号
elasticsearch {
hosts => ["http://esIp:esPort"] //es访问地址
user => "esUser" //es用户
password => "esPassword " // es用户密码
index => "search-%{+YYYY-MM-dd}" //索引格式 %{+YYYY-MM-dd}为当前日期
template_name => "template_search" //模板名称
}
2.3查询通过模板产生的数据
模板会根据不通的规则创建多个索引,在确定数据存在的索引可以通过索引名称进行精致查询,在某些业务场景中不确定数据存在那个索引,可以通过索引前缀加星号进行模糊匹配。
示例:
GET search*/_search
{
"query": {
"match_all": {}
}
}
2.4给索引添加生命周期
对于无实际意义的数据可以通过配置生命周期的方式,让索引自动删除并释放磁盘
1、打开看kibana点击设置
2、点击"索引生命周期"
3、点击"创建策略"
4、填写完成策略名称等基本信息后,开启删除阶段,配置删除规点击"另存为新策略"
5、将策略添加到索引模板
策略和索引模板绑定后,通过该索引模板创建的索引就会应用设置的策略
网友评论