【ES三周年】ES元信息
背景
在ES中,涉及元信息主要有三种,分别为分片元信息、索引元信息、集群元信息(节点元信息),并且这些元信息会保留在磁盘上,这样在节点重启时即可从磁盘上读取对应元信息并恢复。
(资料图片)
分片元信息
1、具体内容
集群中每个分片都有属于自己的元信息,该元信息包括:
public final String indexUUID;public final boolean primary; public final AllocationId allocationId;
对应的类图如下:
分片元信息在shard恢复时会被用到:
首先是GateWayAllocator
在恢复主备分片时,会从集群各个节点获取对应分片元信息(节点读取分片元信息时会判断本地分片的indexUUID
和索引的UUID
相同),用于判断是否可以本地恢复,如果满足条件(如分片的allocatId在in_sync_allocations中)则会从本地恢复分片;其次是在创建IndexShard
时,会判断本地分片的indexUUID
是否和索引的UUID
相同,如果不同则报错(避免分片或索引出现异常)。2、持久化
分片元信息会保存在磁盘上,作用:,对应文件路径路径:${data.path}/nodes/${node.id}/indices/${index.UUID}/${shard.id}/_state/state-xxx.st
实现元信息序列化的代码:
public void toXContent(XContentBuilder builder, ShardStateMetaData shardStateMetaData) throws IOException { builder.field(PRIMARY_KEY, shardStateMetaData.primary); builder.field(INDEX_UUID_KEY, shardStateMetaData.indexUUID); if (shardStateMetaData.allocationId != null) { builder.field(ALLOCATION_ID_KEY, shardStateMetaData.allocationId); }}
分片被持久化的时机有两种方式,其一是分片被创建的时候,此时会分片的元信息持久化,其二是集群状态变化的时候(集群状态变化的时候,会判断分片状态是否变化,只有在当前分片的状态发生变化才更新本地文件,避免大量无效的IO)。
分片持久化的作用前面也提到了,主要是用于分片的恢复。
索引元信息
1、具体内容
集群中每个索引都有属于自己的元信息,该元信息包括:
private final int routingNumShards; private final int routingPartitionSize;private final int numberOfShards;private final int numberOfReplicas; private final Index index; private final long version;private final long[] primaryTerms;private final State state;private final ImmutableOpenMap aliases;private final Settings settings;private final ImmutableOpenMap mappings;private final ImmutableOpenMap customs;private final ImmutableOpenIntMap> inSyncAllocationIds;
对应类图如下:
evernotecid://9B7AC1A3-2163-4103-A68D-1127DA246949/appyinxiangcom/8902081/ENResource/p3135
索引元信息主要是用于提供索引的配置信息以及mapping信息,以便对索引执行相应操作。
2、持久化
索引元信息会保存在磁盘上,作用:,对应文件路径路径:${data.path}/nodes/${node.id}/indices/${index.UUID}/_state/state-xxx.st
实现元信息序列化的代码:
public static void toXContent(IndexMetaData indexMetaData, XContentBuilder builder, ToXContent.Params params) throws IOException { builder.startObject(indexMetaData.getIndex().getName()); builder.field(KEY_VERSION, indexMetaData.getVersion()); builder.field(KEY_ROUTING_NUM_SHARDS, indexMetaData.getRoutingNumShards()); builder.field(KEY_STATE, indexMetaData.getState().toString().toLowerCase(Locale.ENGLISH)); boolean binary = params.paramAsBoolean("binary", false); builder.startObject(KEY_SETTINGS); indexMetaData.getSettings().toXContent(builder, new MapParams(Collections.singletonMap("flat_settings", "true"))); builder.endObject(); builder.startArray(KEY_MAPPINGS); for (ObjectObjectCursor cursor : indexMetaData.getMappings()) { if (binary) { builder.value(cursor.value.source().compressed()); } else { builder.map(XContentHelper.convertToMap(new BytesArray(cursor.value.source().uncompressed()), true).v2()); } } builder.endArray(); for (ObjectObjectCursor cursor : indexMetaData.getCustoms()) { builder.startObject(cursor.key); cursor.value.toXContent(builder, params); builder.endObject(); } builder.startObject(KEY_ALIASES); for (ObjectCursor cursor : indexMetaData.getAliases().values()) { AliasMetaData.Builder.toXContent(cursor.value, builder, params); } builder.endObject(); builder.startArray(KEY_PRIMARY_TERMS); for (int i = 0; i < indexMetaData.getNumberOfShards(); i++) { builder.value(indexMetaData.primaryTerm(i)); } builder.endArray(); builder.startObject(KEY_IN_SYNC_ALLOCATIONS); for (IntObjectCursor> cursor : indexMetaData.inSyncAllocationIds) { builder.startArray(String.valueOf(cursor.key)); for (String allocationId : cursor.value) { builder.value(allocationId); } builder.endArray(); } builder.endObject(); builder.endObject();}
索引原型被持久化的时机有两种方式,其一是节点启动时,此时如果如果索引元信息有发生变化,则会更新索引原型;其二是集群中索引的元信息变化时(如索引的mapping信息变化),此时会更新对应索引元信息;
索引元信息读取时机:
节点启动时用于恢复索引元信息:索引配置信息变更时判断索引元信息是否需要再次持久化:如果原来索引元信息不存在或发生变化则再次持久化分片删除时判断本节点索引元信息是否存在GateWayAllocator
在恢复主备分片时,会从集群各个节点获取对应分片元信息(节点读取分片元信息时会判断本地分片的indexUUID
和索引的UUID
相同)集群元信息
1、具体内容
集群的元信息包括:
private final String clusterUUID;private final long version;private final Settings transientSettings; private final Settings persistentSettings; private final Settings settings;private final ImmutableOpenMap indices; private final ImmutableOpenMap templates;private final ImmutableOpenMap customs;private final int numberOfShards;
对应类图如下:
evernotecid://9B7AC1A3-2163-4103-A68D-1127DA246949/appyinxiangcom/8902081/ENResource/p3147
集群元信息主要是用于提供集群以及索引相关的配置信息信息,以便对集群或索引上执行相应操作提供信息。
2、持久化
集群元信息会保存在磁盘上,作用:,对应文件路径路径:${data.path}/nodes/${node.id}/_state/global-xxx.st
实现元信息序列化的代码:
public static void toXContent(MetaData metaData, XContentBuilder builder, ToXContent.Params params) throws IOException { XContentContext context = XContentContext.valueOf(params.param(CONTEXT_MODE_PARAM, "API")); builder.startObject("meta-data"); builder.field("version", metaData.version()); builder.field("cluster_uuid", metaData.clusterUUID); if (!metaData.persistentSettings().isEmpty()) { builder.startObject("settings"); metaData.persistentSettings().toXContent(builder, new MapParams(Collections.singletonMap("flat_settings", "true"))); builder.endObject(); } if (context == XContentContext.API && !metaData.transientSettings().isEmpty()) { builder.startObject("transient_settings"); metaData.transientSettings().toXContent(builder, new MapParams(Collections.singletonMap("flat_settings", "true"))); builder.endObject(); } builder.startObject("templates"); for (ObjectCursor cursor : metaData.templates().values()) { IndexTemplateMetaData.Builder.toXContent(cursor.value, builder, params); } builder.endObject(); if (context == XContentContext.API && !metaData.indices().isEmpty()) { builder.startObject("indices"); for (IndexMetaData indexMetaData : metaData) { IndexMetaData.Builder.toXContent(indexMetaData, builder, params); } builder.endObject(); } for (ObjectObjectCursor cursor : metaData.customs()) { if (cursor.value.context().contains(context)) { builder.startObject(cursor.key); cursor.value.toXContent(builder, params); builder.endObject(); } } builder.endObject();}
集群元信息持久化时机有两个:其一是节点启动时验证集群的元信息有变化则会重新持久化,其二是集群的元信息发生变化(集群的配置发生变化)则会重新初始化。
索引元信息读取时机:节点启动时用于恢复索引集群元信息用于数据恢复。
节点元信息
1、具体内容
节点的元信息包括:
private final String nodeId;
对应类图如下:
evernotecid://9B7AC1A3-2163-4103-A68D-1127DA246949/appyinxiangcom/8902081/ENResource/p3148
节点元信息主要是用于在集群中唯一标记节点,以便ES在进行各项操作时能唯一区分节点。
2、持久化
节点元信息会保存在磁盘上,作用:,对应文件路径路径:${data.path}/nodes/${node.id}/_state/node-xxx.st
实现元信息序列化的代码:
public void toXContent(XContentBuilder builder, NodeMetaData nodeMetaData) throws IOException { builder.field(NODE_ID_KEY, nodeMetaData.nodeId);}
节点元信息持久化时机:节点启动时会持久化,并且及时已经持久化了会再次写入目的是保证所有的路径上有最新的节点元信息。
索引元信息读取时机:节点启动时读取,如果节点元信息不存在则会为节点生成新的节点元信息。
-
2023-02-22 17:15:51
【ES三周年】ES元信息<
在ES中,涉及元信息主要有三种,分别为分片元信息、索引元信息、集群元信息(节点元信息),并且这些元信息会保留在磁盘上,这样在节点重启时
-
2023-02-22 15:22:13
利德曼:公司目前没有甲流检测试剂产品_世界时快讯<
同花顺金融研究中心2月22日讯,有投资者向利德曼提问,请问贵公司有甲流检测产品吗 公司回答表示,感谢您的关注!公司目前没有甲流检测试剂
-
2023-02-22 13:12:57
实时:铜仁检察机关依法对冯勇涉嫌受贿案提起公诉<
铜仁检察机关依法对冯勇涉嫌受贿案提起公诉
-
2023-02-22 10:56:30
世界微资讯!阿帕拉契亚周报 2023/2/22丨孢子植物床&墙藤套组丨法斯纳克特狂欢继续丨异变入侵前瞻<
本期内容导览本周上新:孢子植物床丨墙藤套组最佳精选:树下同捆包丨洁净牧场房屋同捆包丨午夜倒数同捆包丨瞭望台同捆包丨高大C A M P 同捆包
-
2023-02-22 09:09:18
【道路沥青】1月维持上涨 2月市场走势如何<
进入2023年1月初沥青价格维持上扬,中石化主营上调100-300元 吨,南方地区涨幅远超北方地区,山东、华北地区地炼经历涨-跌-涨,整体价格上扬。
-
2023-02-22 17:15:51
【ES三周年】ES元信息
在ES中,涉及元信息主要有三种,分别为分片元信息、索引元信息、集群元信息(节点元信息),并且这些元信息会保留在磁盘上,这样在节点重启时
-
2023-02-22 15:22:13
利德曼:公司目前没有甲流检测试剂产品_世界时快讯
同花顺金融研究中心2月22日讯,有投资者向利德曼提问,请问贵公司有甲流检测产品吗 公司回答表示,感谢您的关注!公司目前没有甲流检测试剂
-
2023-02-22 13:12:57
实时:铜仁检察机关依法对冯勇涉嫌受贿案提起公诉
铜仁检察机关依法对冯勇涉嫌受贿案提起公诉
-
2023-02-22 10:56:30
世界微资讯!阿帕拉契亚周报 2023/2/22丨孢子植物床&墙藤套组丨法斯纳克特狂欢继续丨异变入侵前瞻
本期内容导览本周上新:孢子植物床丨墙藤套组最佳精选:树下同捆包丨洁净牧场房屋同捆包丨午夜倒数同捆包丨瞭望台同捆包丨高大C A M P 同捆包
-
2023-02-22 09:09:18
【道路沥青】1月维持上涨 2月市场走势如何
进入2023年1月初沥青价格维持上扬,中石化主营上调100-300元 吨,南方地区涨幅远超北方地区,山东、华北地区地炼经历涨-跌-涨,整体价格上扬。
-
2023-02-22 06:59:35
杨木杆低品位硼矿选矿扩大试验_关于杨木杆低品位硼矿选矿扩大试验简述
1、《杨木杆低品位硼矿选矿扩大试验》是由辽宁省地矿局实验研究中心担任第一完成单位。2、由杨克勤、于永坤、金广林、刘积臣、任祥俭担任主要
-
2023-02-22 01:59:35
become familiar with_become
1、turntwnety-oneturn在此句中的意思是“(时刻等)超过,逾”这是特殊搭配,死记!Hehastu
-
2023-02-21 22:05:00
每日热文:班组天地|白鹤展翅,问鼎水电安装“珠峰”
班组天地|白鹤展翅,问鼎水电安装“珠峰”
-
2023-02-21 19:55:47
李苇:种下一颗“春蕾”,报以家乡灿阳-世界最资讯
月上树梢,人影寥寥,广西河池市金城江区五圩镇三境村村民委员会主任助理李苇结束了忙碌的一天,回到家中。那段日子正值广西壮族
-
2023-02-21 17:48:39
朱虹 曹雯芹:东方画魂八大山人(三)
《八大山人画传》朱虹曹雯芹著江西美术出版社出版一个时代结束了,一个时代开始了。八大山人(朱耷)的生命被时代之刃硬生
-
2023-02-21 15:57:27
最近新闻300字摘抄_最近新闻300字
1、神舟七号载人航天飞行于9月25日至30日择机实施中国载人航天工程新闻发言人6日宣布,神舟七号载人航天飞行任务
-
2023-02-21 14:17:48
涨停雷达:汽车零部件个股异动 晋拓股份触及涨停
今日走势:晋拓股份今日触及涨停板,该股近一年涨停16次。 异动原因揭秘:1、公司上市日期为2022-07-25,公司的主营业务是铝合金精密压铸件
-
2023-02-21 11:56:29
环球播报:美民众:美国为了自身利益毁掉“北溪”
当地时间2月19日,美国的一些反战人士在华盛顿举行集会游行活动,要
-
2023-02-21 10:08:46
焦点热门:波兰宣布进一步限制与白俄罗斯之间的陆路交通
波兰宣布进一步限制与白俄罗斯之间的陆路交通,波兰,明斯克,立陶宛,白俄罗斯,拉脱维亚,陆路交通
-
2023-02-21 08:48:44
世界新动态:自驾出行警惕孩子超员
□黄文慧李奕磊近日,高速交警廊坊支队连续查处多起小轿车超员违法行为,这些车辆无一例外都有儿童乘客。案例一:高速交警永清大队执勤民警在
-
2023-02-21 05:14:54
百事通!香蕉减肥的正确方法3天可瘦6斤_香蕉减肥的正确方法
1、香蕉只是单纯食物,本身没有减肥作用,但是熟香蕉含有大量果胶,能润滑肠道,促进肠道蠕动,促进体内代谢物排出,这点对减肥
-
2023-02-21 01:02:22
今日热文:买洗发水时,发现这“7个字”,建议还是放回原位,少用为妙
我们日常离不开洗发水,他能够帮助我们清洁头皮,但是我们在选择洗发水的时候,应该怎样的去选择,才可以打造出来一头乌黑柔顺的头发。大家都
-
2023-02-20 21:11:53
要闻速递:马龙樊振东出战乒乓球男单 中国乒乓队加油
今天来回顾关于马龙樊振东出战乒乓球男单中国乒乓队加油的文章,希望对各位小伙伴们有所帮助。【马龙樊振东出战乒乓球男单中
-
2023-02-20 18:46:37
今日热门!预拌灌浆与。砂浆
建议在大面积铺砖时使用磨砂水泥浆。预拌或预混灌浆不应与水泥灌浆砂浆或砂磨灌浆混淆。以前的产品提供的是方便,因为混合已经为
-
2023-02-20 16:47:26
“北溪”管线爆炸事件更多爆料细节指向美国,外交部回应
对此,中国外交部发言人汪文斌表示,“北溪”管线曾被称为欧洲能源的生命线,“北溪”爆炸事件对全球能源市场和全球生态环境都产生了重大负...
-
2023-02-20 14:54:44
环球头条:西门子双门冰箱尺寸_西门子双门冰箱尺寸规格
1、这是西门子目前热销的200-322几款家用双门冰箱。2、最大的尺寸是668*614*1854(mm)西门子(SIE
-
2023-02-20 11:55:14
比机机:提供了排行榜功能_看你手机性能排第几 当前焦点
但我想说的是另一个测试软件,应该是网页。这个网页叫“毕机”(bijiji net),最近刚升级到2 0版本。它最大的特点
-
2023-02-20 10:13:41
经济规模迈上新台阶 2022年成都高新区GDP突破3000亿元
经济规模迈上新台阶2022年成都高新区GDP突破3000亿元
-
2023-02-20 08:41:52
2月20日生意社金属钕基准价为940000.00元/吨
2月20日,生意社金属钕基准价为940000 00元 吨,与本月初(975000 00元 吨)相比,下降了-3 59%。金属钕年度统计(2022-02-20-
-
2023-02-20 05:46:40
今日热文:古人对时间的划分 古代对时间的划分
今天来聊聊关于古人对时间的划分,古代对时间的划分的文章,现在就为大家来简单介绍下古人对时间的划分,古代对时间的划分,希望
-
2023-02-20 00:51:47
天天实时:叙利亚外交部谴责以色列对叙空袭
当地时间19日,叙利亚外交部发表声明称,叙利亚经历强震,正在疗愈伤口、安葬逝者、接受国际人道主义援助,在此背景下,以色列却对大马士革居
-
2023-02-19 20:44:55
信用卡欠债无力偿还可以申请分期还款吗-世界焦点
1、逾期后您可以主动找银行协商“个性化分期”或者“二次分期业务”,经过友好协商达成协议,最高60期,停息分期,但一直属于逾期状态。2、...
-
2023-02-19 17:00:31
吉大一院完成吉林省首例机器人辅助全髋关节置换术-今日关注
原标题:吉大一院完成吉林省首例机器人辅助全髋关节置换术2月16日,吉大一院骨科中心一骨关节外科主任齐欣团队顺利完成骨科中
-
2023-02-19 14:38:11
老人家看个电影有多难:辗转多家影城无法线下买票-每日速看
今年的电影“新春档”,多部口碑佳作轮番上映,观影者爆棚。近日,82岁的陆老伯却向“新民帮侬忙”反映,当他来到浦东新区浦建
-
2023-02-19 11:52:27
1993年属鸡是什么命金木水火土_1993年属鸡是什么命
1、1993年出生属鸡的人是水鸡命。2、一、水鸡之人首先从属性为鸡的这一个命格的人来说,既可以说是最勤劳的生物了,从早晨