写点什么

Easysearch 冷热架构实战

作者:极限实验室
  • 2025-10-14
    北京
  • 本文字数:1521 字

    阅读完需:约 5 分钟

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 等,详情请参阅官方文档

关于 Easysearch


INFINI Easysearch 是一个分布式的搜索型数据库,实现非结构化数据检索、全文检索、向量检索、地理位置信息查询、组合索引查询、多语种支持、聚合分析等。Easysearch 可以完美替代 Elasticsearch,同时添加和完善多项企业级功能。Easysearch 助您拥有简洁、高效、易用的搜索体验。


官网文档:https://docs.infinilabs.com/easysearch

发布于: 刚刚阅读数: 3
用户头像

简单、易用、极致、创新 2021-11-22 加入

极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

评论

发布
暂无评论
Easysearch 冷热架构实战_easysearch_极限实验室_InfoQ写作社区