【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);}节点元信息持久化时机:节点启动时会持久化,并且及时已经持久化了会再次写入目的是保证所有的路径上有最新的节点元信息。
索引元信息读取时机:节点启动时读取,如果节点元信息不存在则会为节点生成新的节点元信息。
推荐
- 【ES三周年】ES元信息
- 全球今日讯!两条设计时速350公里高铁,取得新进展!
- 天天看点:「奋进的春天」河北所有设区市全部退出全国重点城市空气质量“后十”
- 腊肉的制作方法_腊肉的做法步骤
- c盘为什么莫名其妙满_c盘为什么会越来越满
- Model Y又涨2000,特斯拉调价关注该降温?
- 新红楼梦王熙凤介绍_王熙凤人物介绍 天天热推荐
- KPL:落后1万经济,用“真香组合”翻盘,RW侠3:2胜XQ
- 环球速递!abracadabra歌曲_sorry sorry 和abracadabra舞蹈哪个难
- 杜绝计提资产减值操纵利润行为
- 每日讯息!包塑边坡防护网多少钱 边坡防护网什么牌子好
- 沽源县气象台发布大雾橙色预警【Ⅱ级/严重】【2023-02-17】
- 共性承诺_共性承诺 今日快讯
- 瑞信:重申Albemarle(ALB.US)低于大市评级|焦点热议
- 关注:矿山披新绿 绽放满眼春
- 天天快讯:2022年中国柚子市场规模、产销量、加工市场规模及进出口情况分析
- 【全球聚看点】怀化通道:“光伏+农业”蓄能乡村振兴
- 安徽:2022年大学毕业生六人中就有一人考取硕士研究生_全球快播报
- 世界报道:Stellantis因起火风险召回34万辆Ram卡车
- 重案六组4佟林和陈雪的关系 焦点讯息
- 金光四射的意思_金光四射简单释义 焦点热议
- win10玩游戏帧数低怎么办_如何解决win10系统游戏帧数低问题
- 加力稳投资多地明确水利项目建设计划|环球简讯
- 车牌号测吉凶_66aaa 世界球精选
- 全球热议:七律长征全诗_七律长征全诗及翻译
- 资讯推荐:富贵包贴膏药有效果吗_富贵包贴膏药有用吗
- 黄梅戏的发源地,有什么好看的黄梅戏|天天信息
- 非柜面交易被限制怎么恢复
- 助学贷款续贷多久能收到回执码?_环球通讯
- 乾隆皇帝的儿子都有谁-微动态
- 【天天新视野】分红股是什么意思?
- 全球视点!安徽王家坝泄洪的意义 为什么要泄洪
- 当前热点-信用卡挂失后还能刷吗
- 世界动态:上海京剧院新版京剧《大唐贵妃》即将亮相国家大剧院
- 百万医疗险可以单独购买吗
- 焦点!5g手机可以用4g的手机卡吗 答案是可以的
- 如何制作人造爆米花|环球观速讯
- 世界热讯:阿联酋能源部长:世界经济的发展需要中国
- 乡愁阅读答案
- 当前头条:郑州大学省级重点实验室牵手农业科技公司推进成果转化
- 世界今热点:薄熙来个人简历
- 小学语文基础知识大全,家有小学生的必收_世界看热讯
- 世界热讯:班级安全员工作职责
- 回扣同义词_回扣
- 告别老楼住新房,东城区168户签约居民完成腾退-今日热搜
- 环球即时:幼儿教师个人述职报告总结(10篇)
- 玩转Docker | 随手记神象云账本存储独立部署
- 国际象棋的基本规则_天天观热点
- 东湖高新: 关于全资子公司中标的公告
- 今天北京潮宏基黄金价格多少钱一克(2023年2月14日)_当前时讯
- 全球关注:慈星股份:慈星智能产业园是公司自有产权
- 劳动节黑板报素材 世界滚动
- 场招聘会接连登场,市场主体活力迸发 深圳“用工热”吹响经济回暖号角-当前短讯
- 梅山傩戏-天天观天下
- 广西苗乡迎旅游复苏潮 吸引27万人次现场“赶坡”
- 联想回应科创板IPO终止,此次终止上市的原因是什么,终止上市和退市有什么区别
- 60岁男士退休送什么礼物最好 环球时讯
- 【天天时快讯】释迦果是热性水果吗
- 罗晋 全球观速讯
- 有哪些拳皇完本同人小说啊求拯救
- 全球最新:10岁男孩送什么生日礼物好
- wtf是什么意思
- 热点评!Keep奖牌催生代跑灰产:有商家加价倒卖,还有代跑代拍服务
- 全球快消息!开讲啦!特校孩子的开学消防第一课,点亮开学安全季!
- “互联网充值返券”消费投诉上升 18家经营者被集体约谈
- 昆明城投“22昆明城建SCP002”2月20日兑付,利率为5.1% 当前信息
- 静安区重点企业专场系列招聘活动即将收官,还有这些岗位等你来!
- 引起糖尿病的原因有_引起的糖尿病的病因 什么原因引起的糖尿病
- 今日反渗透是什么意思_透是什么意思_焦点热闻
- 五行蔬菜汤的减肥作用_五行汤的功效与作用
- 世界今头条!大企纷纷加入ChatGPT混战中!
- 大河早点看丨全国首批!河南24地入选;河南今日多地中雨,局地大雪;郑州地铁客流重返百万级别|环球微资讯
- 送女生的生日礼物_报资讯
- 建筑工程周转材料包括哪些_建筑工地周转材料包括哪些
- 焦点播报:疑似魅族 Flyme 10 壁纸图标曝光
- 天天快资讯丨2022人力资源数字化转型白皮书
- 房地产企业全程会计核算与税务处理_房地产企业会计核算和税务处理大全
- 明德任责_对于明德任责简单介绍
- 02月11日06时新疆可克达拉昨日累计报告阳性感染者确诊0例 怎么判断自己是否属于轻型感染者 环球快资讯
- 合并单元格的快捷键按了没用_合并单元格的快捷键
- 刷信誉平台哪个好?店铺怎么刷信誉?
- 十二阶魔方教程完整版_十二阶魔方
- 方差分析可以解决什么问题_方差分析用于解决什么问题_当前报道
- 热点在线丨媒体邀约一般多少钱,有几种方式?
- 家用电器十大品牌排行榜_家用电器十大品牌排行榜有哪些-环球看点
- 超热道奇充电器代托纳SRT EV发出砰砰的咆哮声比地狱猫还快
- 中俄边境出入限制取消?中方回应
- 广西恭城:大岭山下花满蹊 繁花似锦惹人迷
- 初三生的男孩生日送什么东西好
- 脸书正式恢复特朗普账号 结束长达两年封禁-世界看热讯
- 天语小黄蜂_天语大黄蜂怎么样(天语大黄蜂评测)
- Tims联手美国炸鸡品牌 咖啡找到新伴侣
- 当前滚动:泸天化:连续3日融资净买入累计704.6万元(02-09)
- QQ怎么管理单向好友_天天热讯
- 每日动态!北京k酷国际影城_K酷国际影城_北苑路店的评价
- 优酷下载视频怎么下载_如何下载优酷视频及视频下载器iku
- 我国加快向土耳其、叙利亚两国运输救灾物资|环球速看
- 龙姓女孩名字大全2020
- 珠江股份收到上交所问询函 涉重大资产置换及出售影响
- 当前速讯:车牌号测吉凶
X 关闭
行业规章
X 关闭
