elasticsearch-冷热分离

elasticsearch-冷热分离

冷热分离是目前ES非常火的一个架构,它充分的利用的集群机器的优劣来实现资源的调度分配。ES集群的索引写入及查询速度主要依赖于磁盘的IO速度,冷热数据分离的关键点为使用固态磁盘存储数据。若全部使用固态,成本过高,且存放冷数据较为浪费,因而使用普通机械磁盘与固态磁盘混搭,可做到资源充分利用,性能大幅提升的目标。因此我们可以将实时数据(5天内)存储到热节点中,历史数据(5天前)的存储到冷节点中,并且可以利用ES自身的特性,根据时间将热节点的数据迁移到冷节点中,这里因为我们是按天建立索引库,因此数据迁移会更加的方便

步骤:

  • 设置节点冷热标签
  • 从热节点将数据迁移至冷节点

设置节点标签

目标:设置node0和node1为热节点,node2为冷节点

在node0和node1的elasticsearch.yml配置文件中设置:

node.attr.<attr_name>: <value>
node.attr.box_type: hot

在 node2中设置为冷节点:

node.attr.box_type: cold

查看节点标签:

GET _cat/nodeattrs?v&h=node,attr,value&s=attr:desc
node  attr              value
node2 box_type          cold
node1 box_type          hot
node0 box_type          hot

创建索引, 并指定为热节点

PUT /my-index
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 5,
    //指定刚创建的索引分配至热节点
    "index.routing.allocation.require.box_type":"hot"
  }, 
  "mappings": {
    "properties": {
      "context":{
        "type": "text"
      }
    }
  }
}

此时查看 索引分配在哪些节点:

GET _cat/shards/my-index?v&h=index,shard,prirep,node&s=node
index    shard prirep node
my-index 3     r      
my-index 1     r      
my-index 4     r      
my-index 2     r      
my-index 0     r      
my-index 3     p      node0
my-index 1     p      node0
my-index 4     p      node1
my-index 2     p      node1
my-index 0     p      node1

迁移至冷节点

PUT /my-index/_settings
{
  "index.routing.allocation.require.box_type": "cold"
}

结果:

index    shard prirep node
my-index 3     p      node0
my-index 1     p      node0
my-index 4     p      node1
my-index 2     p      node1
my-index 0     p      node1
my-index 3     r      node2
my-index 1     r      node2
my-index 4     r      node2
my-index 2     r      node2
my-index 0     r      node2

感觉和我想的不一样,数据是迁移至node2节点,但是node0和node1节点为什么还有数据?

查询

POST /my-index/_search?preference=_only_nodes:box_type:cold
{
    "query": {
        "match": {
            "name": "helo5"
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值