【ES三周年】ES元信息 焦点热门
2023-02-19 19:00:40 来源:腾讯云
背景
在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);}
节点元信息持久化时机:节点启动时会持久化,并且及时已经持久化了会再次写入目的是保证所有的路径上有最新的节点元信息。
索引元信息读取时机:节点启动时读取,如果节点元信息不存在则会为节点生成新的节点元信息。
关键词: ElasticsearchService Java
为你推荐
-
【ES三周年】ES元信息 焦点热门
-
网聚奋跃而上的中国信心和澎湃动力
-
青岛崂山区:“春雨行动”赋能企业发展-每日看点
-
看围挡就能买套别墅?沈阳楼市火到“大集”的水平了
-
全国政协委员徐礼华—— 推动荆楚文化 走出湖北、走向世界 环球关注
-
埃梅里:换教练后球队反应很好 可以输2-3但2-4不是个好结果_世界热点评
-
新疆“创友圈”为乌市创业社区发展出谋划策 天天简讯
-
【环球快播报】英雄的黎明歌词版_英雄的黎明歌词
-
热点在线丨育发液有用吗真的能生发吗,国内排名第一的防脱生发产品
-
继拔牙后赵丽颖再变脸,说话嘴巴张不开脸肿像杨紫,满脸胶原蛋白 每日讯息
-
穿堂煞是指什么_cts是指什么?
-
天天快看:白鵺
-
共青团四川省委新一届常委会和书记班子出炉
-
连签3个新援!实力原地起飞!西部又诞生一支顶级强队
-
济南银座奥特莱斯七里山店营业吗_济南银座奥特莱斯
-
北京热门酒店婚宴预订排到下半年 婚庆行业迎来强劲复苏
-
婴儿时期的肠道菌群,或影响往后人生的焦虑?
-
国产新车报道:五菱银标首款车型 凯捷正式亮相 每日速递
-
开封市通许县咸平街道:科技“赋能” 拓宽农民增收致富路
-
速递!政府投资建设项目管理合作模式研究_关于政府投资建设项目管理合作模式研究简介
推荐内容
- 【ES三周年】ES元信息 焦点热门
- 网聚奋跃而上的中国信心和澎湃动力
- 青岛崂山区:“春雨行动”赋能企业发展-每日看点
- 看围挡就能买套别墅?沈阳楼市火到“大集”的水平
- 全国政协委员徐礼华—— 推动荆楚文化 走
- 埃梅里:换教练后球队反应很好 可以输2-3但2-4不
- 新疆“创友圈”为乌市创业社区发展出谋划策 天天
- 【环球快播报】英雄的黎明歌词版_英雄的黎明歌词
- 热点在线丨育发液有用吗真的能生发吗,国内排名第
- 继拔牙后赵丽颖再变脸,说话嘴巴张不开脸肿像杨紫
- 穿堂煞是指什么_cts是指什么?
- 天天快看:白鵺
- 共青团四川省委新一届常委会和书记班子出炉
- 连签3个新援!实力原地起飞!西部又诞生一支顶级
- 济南银座奥特莱斯七里山店营业吗_济南银座奥特莱斯
- 北京热门酒店婚宴预订排到下半年 婚庆行业迎来强
- 婴儿时期的肠道菌群,或影响往后人生的焦虑?
- 国产新车报道:五菱银标首款车型 凯捷正式亮相
- 开封市通许县咸平街道:科技“赋能” 拓宽农民增
- 速递!政府投资建设项目管理合作模式研究_关于政
- 当前快报:中国银行人民币外汇牌价(02.17)
- 2022年山东对中亚五国进出口总值达224.6亿元
- 两个人在一起什么最重要_夫妻两个人在一起什么最
- 机械增压和涡轮增压有什么区别_机械增压和涡轮增
- 全球资讯:赛诺医疗冠脉球囊扩张导管在美获批
- 男女配对的惊人定律,醍醐灌顶-热消息
- 【ES三周年】通过Elasticsearch来搭建搜索引擎|全球快播
- 陕西完成首票跨境电商出口海外仓模式无纸化备案
- 【牛头鹿DC】韩服天命之子2.15火WB理解
- 八国联军是哪一年
- 平罗服务靠前审批提速助项目建设
- qq等级怎么加速升级
- 【机构调研记录】浦银安盛基金调研迈普医学
- 水洗棉是什么棉花_水洗棉是什么
- 古老而神秘的预测术,初学五分钟,就能断吉凶的秘
- 世界新消息丨香港测出9款婴儿奶粉有致癌物质 食
- 姓王女孩名字大全_姓王女孩好名字 天天观察
- 重症高峰已过!建议春天多吃这3样,补蛋白,增强
- 去柜台激活信用卡会查征信吗
- 九阴真经唐门三内怎么玩_《九阴真经》唐门内功和
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
中新网通辽10月18日电 (记者 张林虎)18日,记者从内蒙古自治区通辽市奈曼旗公安局获悉,国家一级保护动物--梅花鹿误入当地村民羊群,
-
中新网杭州10月18日电 (王题题 胡燕婕)云天收夏色,浅秋正渐浓。10月18日,浙江杭州市西湖游船有限公司推出的惠民多站点“西湖环湖游
-
中新网福州10月18日电 (记者 龙敏 王东明)福州市晋安区官方18日晚间通报,18日14时47分,晋安区岳峰镇化工路爱摩轮商业广场项目摩天
-
中新网兰州10月18日电 (闫姣 艾庆龙 吉翔)“红山白土头,黄河向西流。”不少人疑问,天下黄河向东流,为何甘肃永靖县这段黄河却向西
-
中新网北京10月18日电 《清华城市健康设施指数》18日在北京发布。报告成果显示,城市健康设施指数领先城市以中心城市和东部沿海城市