elasticsearch基于ingest pipeline的动态索引切割方案

前言: elasticsearch是当今最为便捷的开源搜索引擎,但对于日增量较大的数据,如果不采用分索引的方式进行切割,则会面临单个索引数据无限膨胀的情况,因此必须考虑索引切割的方案,通常会选择某个维度进行切割,如时间维度。这里介绍一下利用ingest的processor基于时间字段进行索引切割的策略。
具体配置

PUT _ingest/pipeline/monthlyindex
{
  "description": "monthly date-time index naming",
  "processors" : [
    {
      "date_index_name" : {
        "field" : "msgtime",
        "date_formats": ["UNIX"], 
        "index_name_prefix" : "test-",
        "date_rounding" : "M",
        "timezone": "Asia/Shanghai"
      }
    }
  ]
}

  monthlyindex为定义的processor名字,description为当前processor的描述,processor定义了其中的处理器,date_index_name为基于日期的索引自动选择处理器,field为时间字段,用于进行索引判断,data_formats为时间格式,UNIX为秒级时间戳格式,同样支持其他格式。index_name_prefix为自动索引前缀。date_rounding为索引滚动策略,支持基于年(y)、月(M)、周(w)、日(d)、小时(h)等;timezone为选择当前时区,国内请用”Asia/Shanghai“,默认为UTC。
数据推送 定义了pipeline后,在推送数据时,使用相应的pipeline即可实现索引的自动选择。

PUT /test/_doc/1?pipeline=monthlyindex
{
  "itemid": 1,
  "msgtime" : "1585129599"
}

得到结果如下

{
  "_index" : "test-2020-03-01",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

可以看到,该条数据自动推向了test-2020-03-01的索引。

备注 如果索引不存在,则需要自动创建,可以利用下面命令开启集群中索引的自动创建

PUT _cluster/settings
{
    "persistent": {
        "action.auto_create_index": true 
    }
}

参考

  1. 基于日期的自动索引:elasticsearch data index name processor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值