ES中如何不采用数据流管理时序数据?

简介: ES中如何不采用数据流管理时序数据?

前言


前面很多文章都是介绍采用数据流结合索引生命周期管理ILM机制管理索引数据,确实非常方便。

但是采用数据流有个很大的弊端是不能直接向数据流发起更新和删除请求,需要采用update_by_query或delete_by_query的API方式进行更新和删除请求,或者直接向数据流中的后备索引发起更新和删除请求。


那么,我们能否不借助数据流,直接管理索引的生命周期呢?

答案是肯定的。我们可以使用索引别名来管理包含时间序列数据的索引,并定期转移到新的索引。


一、具体步骤


为了使用索引别名实现自动滚动和时序数据的生命周期管理,需要这么做:

106.png

官方文档:Manage time series data without data streamsedit


二、创建生命周期策略


说明:该步骤主要是声明索引各生命周期的生存时长和行为,和之前使用数据流时没有区别。

PUT _ilm/policy/timeseries_policy
{
  "policy": {
    "phases": {
      "hot": {                                
        "actions": {
          "rollover": {
            "max_primary_shard_size": "50GB", 
            "max_age": "30d"
          }
        }
      },
      "delete": {
        "min_age": "90d",                     
        "actions": {
          "delete": {}                        
        }
      }
    }
  }
}


三、创建索引模板


PUT _index_template/timeseries_template
{
  "index_patterns": ["timeseries-*"],                 
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "index.lifecycle.name": "timeseries_policy",      
      "index.lifecycle.rollover_alias": "timeseries"    
    }
  }
}


说明:

相比数据流时的索引模板定义,少了data_stream属性,多了滚动索引别名index.lifecycle.rollover_alias的属性。


四、使用写索引别名初始化时序索引


要启动工作,需要引导初始索引并将其指定为索引模板中指定的翻转别名的写索引。此索引的名称必须与模板的索引模式匹配,并以数字结尾。在滚动时,该值将递增,以生成新索引的名称。

PUT timeseries-000001
{
  "aliases": {
    "timeseries": {
      "is_write_index": true
    }
  }
}

说明:

创建索引timeseries-000001,由于索引名称与索引模板timeseries_template中的索引模式index_patterns相匹配,

所以索引模板timeseries_template中的属性运用到索引timeseries-000001上。

声明索引别名为timeseries,需要和索引模板中index.lifecycle.rollover_alias的值保持一致。

通过is_write_index=true声明该索引别名可以执行写操作。


五、检查索引的生命周期


GET timeseries-*/_ilm/explain


总结


本文主要介绍如何采用索引别名来管理时序数据的生命周期。


目录
相关文章
|
3月前
|
存储 数据采集 分布式计算
批量离线表的工作原理是什么?
【8月更文挑战第11天】
79 5
|
3月前
|
算法 数据处理 流计算
流计算引擎数据问题之传播模块工作如何解决
流计算引擎数据问题之传播模块工作如何解决
40 1
|
3月前
|
传感器 PyTorch 数据处理
流式数据处理:DataLoader 在实时数据流中的作用
【8月更文第29天】在许多现代应用中,数据不再是以静态文件的形式存在,而是以持续生成的流形式出现。例如,传感器数据、网络日志、社交媒体更新等都是典型的实时数据流。对于这些动态变化的数据,传统的批处理方式可能无法满足低延迟和高吞吐量的要求。因此,开发能够处理实时数据流的系统变得尤为重要。
102 0
|
5月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在进行DWS层的实时聚合计算时,遇到多次更新同一个字段的情况,该如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 数据采集 缓存
大数据数据采集的数据采集(收集/聚合)的Flume之基本组件的Channel:临时存储数据的管道
在Flume中,Channel是数据采集和传输过程中的一个重要组件。它负责存储从Source获取的数据,并将其转发给Sink进行处理和存储。
150 0
|
数据采集 消息中间件 存储
大数据数据采集的数据采集(收集/聚合)的Flume之基本组件的Event:数据基本单元
在Flume中,Event是数据采集和传输过程中的基本单元。每个Event都代表了一个数据记录,包括一个头信息和一个消息体。
215 0
|
API 索引
ES中摄取管道详解
ES中摄取管道详解
296 0
ES中摄取管道详解
|
存储 缓存 算法
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流
Ptolemy II 能够使异构系统的开发和仿真一同进行,将开发和仿真作为整个系统建模的一部分。正如前两章讨论的那样,不同于其他设计和建模环境,Ptolemy II的一个关键创新在于支持多种计算模型,这些计算模型可被剪裁以适应具体的建模问题。
1610 0
|
Oracle 关系型数据库 MySQL
ETL(十):异构关联(联接器转换组件的使用)(六)
ETL(十):异构关联(联接器转换组件的使用)(六)
ETL(十):异构关联(联接器转换组件的使用)(六)
|
SQL Oracle 关系型数据库
ETL(十):异构关联(联接器转换组件的使用)(二)
ETL(十):异构关联(联接器转换组件的使用)(二)
ETL(十):异构关联(联接器转换组件的使用)(二)