【Elasticsearch】创建时间序列数据流 Time Series Data Stream,简称TSDS

在Elasticsearch中,设置时间序列数据流(Time Series Data Stream,简称TSDS)是一种高效管理和存储时间序列数据的方法。时间序列数据是指按照时间顺序记录的数据点,例如传感器数据、日志数据或任何随时间变化的指标。TSDS通过优化索引结构和生命周期管理,帮助用户高效地存储、查询和分析这类数据。

以下是详细说明如何在Elasticsearch中设置TSDS的步骤和关键概念:

---

1.时间序列数据流(TSDS)的概念

时间序列数据流是Elasticsearch中的一种特殊数据流,专为处理时间序列数据设计。它通过以下方式优化性能和存储:

• 自动分片管理:TSDS会根据时间范围自动分片数据,确保每个分片只包含特定时间段的数据。

• 生命周期管理:通过索引生命周期管理(ILM),TSDS可以自动执行滚动(rollover)、压缩(shrink)和删除等操作。

• 优化查询性能:TSDS通过时间序列维度(`time_series_dimension`)和时间序列指标(`time_series_metric`)字段优化查询性能,确保快速检索。

---

2.设置TSDS的步骤

步骤1:检查先决条件

在开始设置TSDS之前,需要确保以下条件满足:

• Elasticsearch版本:确保使用的是支持TSDS的Elasticsearch版本(如8.x及以上)。

• 权限:用户需要具备以下权限:

• 集群权限:`manage_ilm`(管理索引生命周期策略)和`manage_index_templates`(管理索引模板)。

• 索引权限:`create_doc`和`create_index`(用于创建TSDS),以及`manage`权限(用于滚动TSDS)。

---

步骤2:创建索引生命周期策略(ILM)

索引生命周期管理(ILM)是Elasticsearch中用于自动化索引管理的工具。对于TSDS,建议使用ILM来管理其后端索引。生命周期策略定义了索引在不同阶段的行为,例如:

• Hot阶段:数据写入阶段,通常设置`rollover`操作,根据时间或大小滚动索引。

• Warm阶段:数据不再写入,但需要查询的阶段,通常执行压缩操作。

• Cold阶段:数据很少被访问,但需要保留的阶段,通常使用可搜索快照。

• Frozen阶段:数据被冻结,但仍可查询。

• Delete阶段:数据最终被删除。

以下是一个示例生命周期策略,适用于气象传感器数据:

```json

PUT _ilm/policy/my-weather-sensor-lifecycle-policy

{

  "policy": {

    "phases": {

      "hot": {

        "actions": {

          "rollover": {

            "max_age": "1d", // 每天滚动一次索引

            "max_primary_shard_size": "50gb" // 每个分片最大50GB

          }

        }

      },

      "warm": {

        "min_age": "30d",

        "actions": {

          "shrink": {

            "number_of_shards": 1

          },

          "forcemerge": {

            "max_num_segments": 1

          }

        }

      },

      "cold": {

        "min_age": "60d",

        "actions": {

          "searchable_snapshot": {

            "snapshot_repository": "found-snapshots"

          }

        }

      },

      "frozen": {

        "min_age": "90d",

        "actions": {

          "searchable_snapshot": {

            "snapshot_repository": "found-snapshots"

          }

        }

      },

      "delete": {

        "min_age": "735d",

        "actions": {

          "delete": {}

        }

      }

    }

  }

}

```

 

 

 

---

步骤3:创建索引模板

索引模板定义了TSDS的结构,包括字段映射、索引设置和生命周期策略。以下是创建索引模板的关键点:

• 索引模式:定义匹配TSDS名称的模式,例如`metrics-weather_sensors-*`。

• 启用数据流:设置`data_stream`为`{}`以启用数据流。

• 字段映射:

• 维度字段:标记为`time_series_dimension`的字段,用于分片路由。

• 指标字段:标记为`time_series_metric`的字段,用于存储实际数据。

• 索引设置:

• 设置`index.mode`为`time_series`。

• 指定生命周期策略名称(`index.lifecycle.name`)。

• 优先级:设置优先级高于200,以避免与内置模板冲突。

以下是一个示例索引模板:

```json

PUT _index_template/my-weather-sensor-index-template

{

  "index_patterns": ["metrics-weather_sensors-*"],

  "data_stream": {},

  "template": {

    "settings": {

      "index.mode": "time_series",

      "index.lifecycle.name": "my-weather-sensor-lifecycle-policy"

    },

    "mappings": {

      "properties": {

        "sensor_id": {

          "type": "keyword",

          "time_series_dimension": true

        },

        "location": {

          "type": "keyword",

          "time_series_dimension": true

        },

        "temperature": {

          "type": "half_float",

          "time_series_metric": "gauge"

        },

        "humidity": {

          "type": "half_float",

          "time_series_metric": "gauge"

        },

        "@timestamp": {

          "type": "date"

        }

      }

    }

  },

  "priority": 500,

  "_meta": {

    "description": "Template for my weather sensor data"

  }

}

```

---

步骤4:创建TSDS

创建TSDS可以通过以下两种方式:

1. 自动创建:通过向TSDS名称发送索引请求,Elasticsearch会自动根据索引模板创建TSDS。

```json

   PUT metrics-weather_sensors-dev/_doc

   {

     "@timestamp": "2099-05-06T16:21:15.000Z",

     "sensor_id": "HAL-000001",

     "location": "plains",

     "temperature": 26.7,

     "humidity": 49.9

   }

   ```

2. 手动创建:使用`_data_stream`API直接创建TSDS。

```json

   PUT _data_stream/metrics-weather_sensors-dev

   ```

---

步骤5:保护TSDS

为了确保数据安全,可以使用Elasticsearch的安全功能(如角色和权限)控制对TSDS的访问。授予对TSDS的权限会自动授予对其后端索引的相同权限。

---

3.将现有数据流转换为TSDS

如果已经有一个普通数据流,可以通过以下步骤将其转换为TSDS:

1. 编辑现有的索引生命周期策略、组件模板和索引模板,以支持TSDS。

2. 手动滚动数据流的写入索引,确保其后端索引的`index.mode`设置为`time_series`。

```json

   POST metrics-weather_sensors-dev/_rollover

   ```

---

4.组件模板和`index.mode`设置

如果使用组件模板,需要注意以下几点:

• 组件模板中的映射和设置需要独立有效。

• 如果定义了`index.routing_path`,则其引用的字段需要定义在启用了`time_series_dimension`属性的同一个组件模板中。

• `index.mode`设置为`time_series`时,`index.routing_path`会自动根据`time_series_dimension`字段配置。

---

5.总结

通过上述步骤,您可以高效地设置和管理时间序列数据流(TSDS)。TSDS通过优化索引结构和生命周期管理,显著提升了时间序列数据的存储效率和查询性能。它特别适用于需要处理大量时间序列数据的场景,例如物联网传感器数据、日志数据或监控指标。

---

希望这些内容能够帮助您更好地理解和设置Elasticsearch中的时间序列数据流(TSDS)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值