ES自定义索引模板及生命周期设置

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、将策略添加到索引模板

策略和索引模板绑定后,通过该索引模板创建的索引就会应用设置的策略

你可能感兴趣的:(ES自定义索引模板及生命周期设置)