美文网首页
ES自定义索引模板及生命周期设置

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

作者: 无敌大俊俊丶 | 来源:发表于2022-03-09 14:14 被阅读0次

    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自定义索引模板及生命周期设置

          本文链接:https://www.haomeiwen.com/subject/xiutdrtx.html