当前位置: 首页 > article >正文

ES数据管理

ES 数据管理

  1. 索引在 Elasticsearch 中的生命周期:

  1. 针对一个超大规模的集群:

  • 注意:需要确保集群中至少有一个 data_hot 和 data_content 节点,即使它们是同一个节点,否则新索引将无法被分配。 新创建的索引默认将分配到 data_content 节点上。

  1. 各节点职责:

随着数据量的不断增大,我们需要对索引进行一定的维护管理甚至是删除清理。利用 ILM 策略我们针对索引不同阶段对数据读写的要求,将索引分配到合适的节点上,从而更好地利用机器的资源:

  • 例如最新需要频繁读写的数据,可以保存到 SSD 硬盘的节点上。

  • 对于较旧的数据,可以保存到机械硬盘的节点上。

  • 对于归档数据,可以保持到大容量廉价硬盘的节点上。

  • 当数据超过一定的时间,不再需要时,可以将该数据删除。

1. 官方:ILM

1.1 ILM介绍

索引生命周期管理 (Index Lifecycle Management, ILM) 是在 Elasticsearch 在 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能。它允许用户自动管理索引的整个生命周期,从创建到删除。

定义索引生命周期阶段:ILM定义了五个阶段:Hot、Warm、Cold、Frozen和Delete。每个阶段都可以执行特定的操作:rollover、force merge、shrink、delete 创建生命周期策略:通过定义策略,可以指定索引在每个阶段应该执行的操作,以及从一个阶段移动到另一个阶段的条件。例如,可以设置一个策略,当索引达到50GB或30天大小时进行rollover,并在rollover后90天删除索引。

应用生命周期策略:将定义的策略应用到索引模板中,这样新创建的索引将自动采用这个策略。例如,可以创建一个索引模板timeseries_template,并将index.lifecycle.name设置为刚才创建的策略名称。

1.2 生命周期5个阶段

ILM 将一个索引的生命周期定义为了 5 个阶段,除了 Hot 阶段以外,其他阶段都是可选的。

序号阶段介绍
1Hot索引正在被实时地写入和查询,可根据索引的文档数、大小、时长决定是否调用 Rollover API 来滚动创建新的索引。
2Warm索引不再被更新,但仍在被查询。
3Cold索引不再被更新,并且很少被查询,如果这些查询比较慢也没关系。
4Frozen索引不再被更新,并且很少被查询,如果这些查询非常慢也没关系。
5Delete不再需要索引,可以安全地删除。

1.3 5个阶段对应Action

不同的阶段只允许执行相应的 Action,具体如下表所示:

阶段Set PriorityUnfollowRolloverRead-OnlyShrinkForce MergeSearchable SnapshotAllocateMigrateWait For SnapshotDelete
Hot
Warm
Cold
Frozen
Delete

1.4 常用Action介绍

常用的 Action 如下:

序号动作介绍
1Rollover根据索引的文档数、大小、时长决定是否调用 Rollover API 来滚动创建新的索引。
2Shrink减少索引的主分片数。
3Force Merge段合并,可以减少索引段的数量并提高检索速度。段合并的时候会将那些旧的已删除文档从文件系统中清除。
4Allocate修改索引的副本分片数。
5Read-Only将索引设置为只读。
6Delete删除索引。

1.5 data tiers(数据层)概念

在 Elasticsearch 7.10 中引入了 data tiers(数据层)的概念,对数据节点类型做进一步的细分,分为 data_content, data_host, data_warm, data_cold, data_frozen,同一数据层的节点通常拥有相同硬件配置和性能。不同数据层的定义如下:

  1. data_content:内容层节点,通常用于处理不经常变化的数据,如产品目录或文章档案。这些节点优化了查询性能,通常需要较高的计算性能和处理复杂搜索及聚合的能力。

  2. data_hot:热层节点,用于处理最频繁访问和最近写入的时间序列数据,如日志或指标。这些节点需要快速的读写能力,通常配备SSD存储和更多的硬件资源。

  3. data_warm:温层节点,用于存储访问频率较低的时间序列数据,这些数据很少需要更新。温层节点通常不需要像热层节点那样快速,但仍然允许进行更新。

  4. data_cold:冷层节点,用于存储不常被查询的数据,这些数据通常不会更新。冷层节点可以配置为使用成本较低的硬件,并且可以进行压缩和减少副本数量以节省存储空间。

  5. data_frozen:冻结层节点,用于存储很少被查询且从不更新的数据。冻结层使用部分挂载的索引来存储和从快照存储库加载数据,这减少了本地存储和运营成本,同时仍然允许搜索冻结数据。

1.6 Rollover

  • 允许的阶段:rollover操作仅允许在“hot”阶段使用

  • 触发条件:rollover可以在满足以下一个或多个条件时触发:

    • max_age:索引创建后的最大时间。

    • max_docs:索引中的最大文档数量。

    • max_size:索引的总大小。

    • max_primary_shard_size:索引中最大主分片的大小。

    • max_primary_shard_docs:索引中最大主分片的文档数量。

1.7 Force merge

  • 允许的阶段force merge 操作允许在 "hot" 和 "warm" 阶段使用。

  • 与rollover的配合:在 "hot" 阶段使用 force merge 时,必须同时存在 rollover 操作。如果没有配置 rollover 操作,ILM将拒绝该策略。

  • 选项

    • max_num_segments:(必需,整数)合并到的段数。要完全合并索引,设置为1。

    • index_codec:(可选,字符串)用于压缩文档存储的编解码器。唯一接受的值是 best_compression,它使用DEFLATE提供更高的压缩比,但存储字段性能较慢。要使用默认的LZ4编解码器,请省略此参数。

2. cerebro

PUT your_index/_settings
{
  "index": {
    "number_of_replicas" : 1
  }
}

3. Curator


http://www.kler.cn/a/463700.html

相关文章:

  • [Qt] Qt介绍 | 搭建SDK
  • ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础
  • 微服务实战——购物车模块实战
  • 弧形导轨如何避免生锈?
  • Mac 版本向日葵退出登录账号
  • 慧集通iPaaS集成平台低代码培训-基础篇
  • UnityRenderStreaming使用记录(三)
  • 远程服务器训练模型,使用tmux防止训练终止
  • Go语言方法和接收器类型详解
  • vue3配置测试环境、开发环境、生产环境
  • UNI-APP_i18n国际化引入
  • 无人机技术突飞猛进,超大集群飞行技术详解
  • http报头解析
  • 爬虫与反爬虫实现全流程
  • STM32-I2C通信
  • 安装PostgreSQL后的初始化操作
  • 浏览器--解决页面没刷新的问题(清除所有缓存)
  • 【从零开始入门unity游戏开发之——C#篇35】C#自定义类实现Sort自定义排序
  • net core程序部署到 iis 出现跨域问题
  • Spring Boot JPA Oracle 最佳实践 20 条
  • 《迁移学习与联邦学习:推动人工智能发展的关键力量》
  • APP怎么抓取原生日志 - Android篇
  • springboot3.X 无法解析parameter参数问题
  • vue.js scoped样式冲突
  • 【mediapipe】实现卷腹运动识别(视频或摄像头)并计数
  • html 音频和视频组件