Elasticsearch使用小结之冷热分离

索引迁移

索引setting中的index.routing.allocation.exclude和index.routing.allocation.include可以用于指定索引分配与哪些节点。同时,这两个配置是可以在index存在的时候修改的,我们可以通过修改这两个配置的方式来迁移索引。
比如:
ES集群存在5个节点,ip分别为:
192.168.1.101,
192.168.1.102,
192.168.1.103,
192.168.1.104,
192.168.1.105
1. 我们先创建一个索引,使其分配在192.168.1.101,192.168.1.102上
PUT test_index
{
"settings":{
"index":{
"routing.allocation.exclude._ip":"192.168.1.101,192.168.1.102"
}
}
}
2. 使用cat shards API查看test_index的分片分布
GET _cat/shards/test_index
返回如下:
test_index 2 p STARTED 0 162b 192.168.1.105 Z1SgiFF
test_index 0 p STARTED 0 162b 192.168.1.103 qEu6eMp
test_index 3 p STARTED 0 162b 192.168.1.104 xlTltSO
test_index 5 p STARTED 0 162b 192.168.1.104 xlTltSO
test_index 4 p STARTED 0 162b 192.168.1.105 Z1SgiFF
test_index 1 p STARTED 0 162b 192.168.1.103 qEu6eMp 3. 修改配置
PUT test_index/_settings
{
"settings":{
"index":{
"routing.allocation.exclude._ip":"192.168.1.103,192.168.1.104,192.168.1.105",
"number_of_shards": 6
}
}
}
4. 查看分片
GET _cat/shards/test_index
test_index 2 p STARTED 0 162b 192.168.1.102 9OHYhSa
test_index 4 p STARTED 0 162b 192.168.1.101 -RdAJHx
test_index 0 p STARTED 0 162b 192.168.1.102 9OHYhSa
test_index 5 p STARTED 0 162b 192.168.1.104 xlTltSO -> 192.168.1.101 -RdAJHx
test_index 3 p STARTED 0 162b 192.168.1.101 -RdAJHx
test_index 5 p STARTED 0 162b 192.168.1.102 9OHYhSa

节点tag

在节点启动时,在192.168.1.101和192.168.1.102上指定了
bin/elasticsearch -Enode.attr.rack=rack1
其余三台指定了
bin/elasticsearch -Enode.attr.rack=rack2
使用 GET _nodes/stats 查看:
{
"_nodes": {
"total": 5,
"successful": 5,
"failed": 0
},
"cluster_name": "elasticsearch",
"nodes": {
"-RdAJHxHTf2kHNyfUwHHBw": {
"timestamp": 1559467108509,
"name": "-RdAJHx",
"transport_address": "192.168.1.101:9200",
"host": "192.168.1.101",
"ip": "192.168.1.101:9200",
"roles": [
"data",
"ingest"
],
"attributes": {
"tag": "rack1"
}
....
},
"9OHYhSaxRgKKu_H0q18KyA": {
"timestamp": 1559467108628,
"name": "9OHYhSaxRgKKu_H0q18KyA",
"transport_address": "192.168.1.102:9200",
"host": "192.168.1.102",
"ip": "192.168.1.102:9200",
"roles": [
"data",
"ingest"
],
"attributes": {
"tag": "rack1"
}
....
},
"qEu6eMp9SEK7mlB9HmjCFA": {
"timestamp": 1559467110507,
"name": "qEu6eMp",
"transport_address": "192.168.1.103:9200",
"host": "192.168.1.103",
"ip": "192.168.1.103:9200",
"roles": [
"data",
"ingest"
],
"attributes": {
"tag": "rack2"
}
....
},
"xlTltSOCQmibG9HICbnQyw": {
"timestamp": 1559467110507,
"name": "xlTltSO",
"transport_address": "192.168.1.104:9200",
"host": "192.168.1.104",
"ip": "192.168.1.104:9200",
"roles": [
"data",
"ingest"
],
"attributes": {
"tag": "rack2"
}
....
},
"Z1SgiFFrQMqrPKKGir1EXg": {
"timestamp": 1559467110507,
"name": "Z1SgiFF",
"transport_address": "192.168.1.105:9200",
"host": "192.168.1.105",
"ip": "192.168.1.105:9200",
"roles": [
"data",
"ingest"
],
"attributes": {
"tag": "rack2"
}
....
}
我们也可以通过指定attributes来控制索引的迁移,这里需要配置index.routing.allocation.exclude.tag或者index.routing.allocation.include.tag

冷热分离

结合上述,我们可以很方便的进行冷热分离,先将节点分类,划分为两块,分别用于存储热数据和冷数据,在新建索引时指定索引的index.routing.allocation.exclude.tag为冷节点(或者index.routing.allocation.include.tag为热节点,效果一样),然后在索引不再有数据写入时指定index.routing.allocation.exclude.tag为热节点(与前面用的对应, 建议统一使用exclude或者include,两者混用时,由于两者不能覆盖,需要注意置空)
示例:
在上述的ES中,我们将rack1的作为热节点,rack2的作为冷节点。
1. PUT test_index
{
"settings":{
"routing.allocation.exclude.tag":"rack2",
"number_of_shards": 6
}
}
2. 数据写入
3. PUT test_index/_settings
{
"settings":{
"routing.allocation.exclude.tag":"rack1"
}
}

Elasticsearch使用小结之冷热分离的更多相关文章

  1. 让Elasticsearch集群冷热分离、读写分离【转】

    转自:https://blog.csdn.net/jiao_fuyou/article/details/50511255 根据Elasticsearch中文社区<ES冷热分离(读写分离) hot ...

  2. ElasticSearch实战系列十: ElasticSearch冷热分离架构

    前言 本文主要介绍ElasticSearch冷热分离架构以及实现. 冷热分离架构介绍 冷热分离是目前ES非常火的一个架构,它充分的利用的集群机器的优劣来实现资源的调度分配.ES集群的索引写入及查询速度 ...

  3. es高级用法之冷热分离

    背景 用户需求:近期数据查询速度快,较远历史数据运行查询速度慢? 对于开发人员而言即数据的冷热分离,实现此功能有2个前提条件: 硬件:处理速度不同的硬件,最起码有读写速度不同的硬盘,如SSD.机械硬盘 ...

  4. Elasticsearch7.X ILM索引生命周期管理(冷热分离)

    Elasticsearch7.X ILM索引生命周期管理(冷热分离) 一.“索引生命周期管理”概述 Elasticsearch索引生命周期管理指:Elasticsearch从设置.创建.打开.关闭.删 ...

  5. 工作随笔——elasticsearch数据冷热分离、数据冷备

    概述: 适合日志类型的数据存储方案.即当日数据写入,历史数据只读. 节省部分硬件成本.热数据采用更好的硬件. 环境: 已有6个ES节点,使用docker-compose方式搭建. es1:master ...

  6. 高效管理 Elasticsearch 中基于时间的索引——本质是在利用滚动模式做数据的冷热分离,热索引可以用ssd

    高效管理 Elasticsearch 中基于时间的索引 转自:http://stormluke.me/es-managing-time-based-indices-efficiently/ 用 Ela ...

  7. ElasticStack系列之二十 & 数据均衡、迁移、冷热分离以及节点自动发现原理与机制

    1. 数据均衡 某个shard分配到哪个节点上,一般来说,是由 ELasticSearch 自行决定的.以下几种情况会触发分配动作: 新索引的建立 索引的删除 新增副本分片 节点增减引发的数据均衡 在 ...

  8. ElasticSearch 使用小结

    写在前面 要做个元数据服务,包括存储和查询.元数据除了一些基本字段外,其他格式是自由的,存储输入为一个JSON形式.比如下面是一个文件对象的元数据: { "name":" ...

  9. ElasticSearch使用小结

    最近有个业务需求,即全文搜索关键字查询列表,因而转向ES的学习,也学习了大半个月了,做个笔记,总结下自己的学习历程. 独自学习一项新技术,总是难免走不少弯路的,在此推荐下ES的基础教程,对,好好学习官 ...

随机推荐

  1. js快速将字符串数组转化为数字数组(互换)

    1.数字数组转化为字符串数组 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); //结果: ['1', '2', '3', '4', '5 ...

  2. 使用python开发ansible自定义模块的简单案例

    安装的版本ansible版本<=2.7,<=2.8是不行的哦 安装模块 pip install ansible==2.7 先导出环境变量 我们自定义模块的目录. 我存放的目录 export ...

  3. windows游戏编程了解消息事件模型

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22309265 作者:jadeshu   邮箱: jades ...

  4. 超大地图MMORPG的场景管理

    目前在做一个超大地图MMORPG的场景管理部分,客户端通过动态预读解决了超大图量的动态加载,但是在做人物行走的时候遇到了一些问题: 一张地图上的PLAYER和NPC等是存放在一个list中的,地图超大 ...

  5. spring相关知识点易错

    1.spring不支持静态变量注入,即不能再static变量上面加@Resoure 要是想注入的话就用set方法注入 private static ComboPooledDataSource pool ...

  6. ILI9341液晶显示

    17.1液晶显示原理 TFT-LCD(Thin Film Transistor Liquid Crystal Display)即薄膜晶体管液晶显示器,是微电子技术与液晶显示器技术巧妙结合的的一种技术. ...

  7. 对官网vue事件修饰符串联的顺序如何理解?

    官网有一个提醒:使用修饰符时,顺序很重要:相应的代码会以同样的顺序产生.因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent ...

  8. [dart学习]第五篇:操作符

    前言:本系列内容假设读者有一定的编程基础,如了解C语言.python等. 本节一起来学习dart的操作符,直接拷贝官网的操作符描述表如下: Description Operator unary pos ...

  9. BigDecimal的toString和toPlainString区别

    创建一个BigDecimal的数,分别调用toPlainString和toString方法 import java.math.BigDecimal; public class Test05 { pub ...

  10. 给数据库授权,否则程序、navicat无法连接数据库的,每创建一个数据库都要给数据库授权

    给数据库授权,否则程序.navicat无法连接test1数据库的 mysql> grant all privileges on test1.* TO 'root'@'%' identified ...