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

Easysearch 冷热架构实战

在之前的文章中,我们介绍了如何使用索引生命周期策略来管理索引。如果要求索引根据其生命周期阶段自动在不同的节点之间迁移,还需要用到冷热架构。我们来看看具体如何实现。

冷热架构

冷热架构其实就是在 Easyearch 集群中定义不同属性的节点,这些节点共同组成冷热架构。比如给所有热节点一个 hot 属性,给所有冷节点一个 cold 属性。在 Easyearch 中分配节点属性是通过配置文件(easysearch.yml)来实现的,比如我要定义一个热节点和一个冷节点,我可以在对应节点的配置文件中添加如下行:

# 热节点添加下面的行
node.attr.temp: hot# 冷节点添加下面的行
node.attr.temp: cold

有了这些属性,我们就可以指定索引分片在分配时,是落在 hot 节点还是 cold 节点。

查看节点属性

测试环境是个 2 节点的 Easysearch 集群。

比如我创建新索引 test-index,希望它被分配到 hot 节点上。

PUT test-index
{"settings": {"number_of_replicas": 0,"index.routing.allocation.require.temp": "hot"}
}

可以看到 test-index 索引的分片分配到 hot 节点 node-1 上。我们修改索引分配节点的属性,让其移动到 cold 节点 node-2 上。

PUT test-index/_settings
{"settings": {"index.routing.allocation.require.temp": "cold"}
}

生命周期与冷热架构

在上面的例子中,我们通过索引分配节点属性对索引“坐落”的节点进行了控制。在索引生命周期策略中也支持对该属性进行修改,实现索引根据生命周期阶段自动在不同的节点之间移动的目的。

比如我们定义一个简单的索引策略:

  • 索引创建后进入 hot 阶段,此阶段的索引被分配到 hot 节点
  • 创建索引 3 分钟后,索引进入 cold 阶段,此阶段索引分片移动到 cold 节点

创建策略

PUT _ilm/policy/ilm_test
{"policy": {"phases": {"hot": {"min_age": "0m",},"cold": {"min_age": "3m","actions": {"allocate" : {"require" : {"temp": "cold"}}}}}}
}

生命周期策略后台是定期触发的任务,为了更快的观测到效果,可以修改任务触发周期为每分钟 1 次。

PUT _cluster/settings
{"transient": {"index_lifecycle_management.job_interval":"1"}
}

创建索引模板

创建完索引生命周期策略,还需要索引模板把索引和生命周期策略关联起来。我们创建一个模板把所有 ilm_test 开头的索引与 ilm_test 生命周期策略关联,为了便于观察,指定索引没有副本分片。

PUT _template/ilm_test
{"order" : 100000,"index_patterns" : ["ilm_test*"],"settings" : {"index" : {"lifecycle" : {"name" : "ilm_test"},"number_of_replicas" : "0","routing.allocation.require.temp": "hot"}}}

创建索引

创建一个 ilm_test 开头的索引,应用上一步创建的索引模板。

POST ilm_test_1/_doc
{"test":"test"
}

查看索引分片分配情况。

目前索引存储在 node-1 节点,按计划 3 分钟后将会移动到 node-2 上。

至此我们已通过索引生命周期策略实现了索引分片的移动,其实支持的操作还有很多,比如: rollover、close、snapshot等,详情请参阅官方文档。

http://www.xdnf.cn/news/17528.html

相关文章:

  • Linux下管道的实现
  • SpringBoot 集成 MapStruct
  • 《从零实现哈希表:详解设计、冲突解决与优化》
  • [激光原理与应用-197]:光学器件 - 图解双折射晶体的工作原理
  • Aurora接口FPGA设计
  • C# 异步编程(使用异步Lambda表达式)
  • pdf预览Vue-PDF-Embed
  • C++ 类模板
  • Android MVP架构详解:从理论到实践
  • [优选算法专题一双指针——四数之和]
  • 大语言模型概述
  • 【后端】Java Stream API 介绍
  • Java -- 日期类-第一代-第二代-第三代日期
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • QT环境搭建
  • 下肢康复机器人机械结构设计cad【6张】三维图+设计说明说书
  • 【数据结构入门】栈和队列
  • 用天气预测理解分类算法-从出门看天气到逻辑回归
  • LeetCode111~130题解
  • Nginx 性能优化与动态内容处理
  • linux 操作ppt
  • 排序概念以及插入排序
  • C++-红黑树
  • 嵌入式 Linux Mender OTA 实战全指南
  • 上海AI Lab、浙大EagleLab等提出RRVF:利用「验证非对称性」,只输入图片学习视觉推理
  • 【LLM】Openai之gpt-oss模型和GPT5模型
  • NestJS Config 入门教程
  • 自动生成视频的AI大模型高效创作指南
  • Java Stream API 实战:提升集合处理的效率与可读性!
  • 微雪电子发布工业级ESP32-S3-POE工控板:8路隔离IO,双核240MHz赋能AIoT,一根网线解决供电与通信,工业物联网迎来高性价比控制新选择