华为云用户手册

  • 圈层发展计划伙伴权益 加入“圈层发展计划”,伙伴即可获得4大权益: 1.共享华为云丰富的营销、品牌资源 华为云商业化资源覆盖多个资源位,包括官网广告Banner、热门专区推荐、案例中心等,曝光量级大,第一时间触达优质用户。 2.拓展多销售渠道,增加商机 依托华为云强大销售渠道体系,华为云商店协助合作伙伴将优质商品扩大流量入口,包括赋能云、伙伴云、政务云等,以销售榜单、线下圈层活动、专项培训交流会等形式触达用户及各大销售渠道,增加商机。 3.获取联合营销基金激励 云商店设置联合营销市场发展基金(Marketing Development Fund,简称MDF),为云商店联营商品进行的联合营销活动提供基金支持,帮助伙伴开展市场营销活动,不断提升销售额、达成市场目标。 关于如何申请联营营销基金,请参考《联合营销市场发展基金申请》。 4.更优质的平台服务,获客快一步 专职团队,在售前和售后上提供专项支撑,优化商品服务体验,减轻合作伙伴侧沟通压力,并且提供商机共享权益。 *更多权益展示(详细伙伴权益信息请以报名后实际沟通为准) 父主题: 圈层发展计划
  • 入驻华为云云商店的条件有哪些 成为华为云云商店商家,您需要符合以下条件: 符合国家相关法律、法规规定,拥有正规的公司资质,具有15人以上的技术及客服团队。 企业成立至少1年以上,且注册资金50万元以上。 具有专业的技术及售后团队支持,可提供不少于5*8小时的客服在线服务。 拥有有效的软件著作权证书(ISV类)或销售相关许可证书。 接受并签订《华为云云商店服务商合作协议》并按照协议约束的条款开展业务合作。 接受华为云云商店其他相关协议及管理规范。 父主题: 商家入驻
  • 已入驻的商家,如何退出云商店? 图1 商家退出流程 表1 流程说明 序号 活动事项 活动描述 流程角色 001 商家提交退出申请 商家退出需满足前提条件; 若有商品未退市,商家需向公邮(partner@huaweicloud.com)发送申请商品退市邮件以及商家退出邮件; 若无商品未退市,商家只需向公邮(partner@huaweicloud.com)发送申请商家退出邮件。 商家 002 运营经理操作商家退出 若有商品未退市,运营经理审核商品退市以及商家退出邮件,操作商品退市、商家冻结和清退; 若无商品未退市,运营经理审核商家退出邮件,操作商家冻结和清退。 华为云 003 商家退出成功 系统 前提条件: 商品需要全部退市且无订单在履行; 没有未结算的订单; 没有未开票的订单(如有客户未申请开具发票的订单,需上传与客户沟通不需要开票的证明); 没有未开具的平台费发票。 商家退出之后,此账号无法再次申请入驻云商店。
  • 通过索引生命周期管理实现存算分离 登录 云搜索服务 管理控制台。 在左侧导航栏,选择对应的集群类型,进入集群列表页面。 在集群列表页面中,单击集群操作列的“Kibana”登录OpenSearch Dashboards页面。 在OpenSearch Dashboards的左侧导航中选择“Dev Tools”,进入命令执行页面。 创建生命周期策略“hot_warm_policy”。 策略定义:当索引创建3天后,自动调用冻结索引API将数据转储到OBS;索引创建7天后,删除该索引。 PUT _plugins/_ism/policies/hot_warm_policy { "policy": { "description": "hot warm delete workflow", "error_notification": null, "default_state": "hot", "states": [ { "name": "hot", "actions": [], "transitions": [ { "state_name": "warm", "conditions": { "min_index_age": "3d" } } ] }, { "name": "warm", "actions": [ { "freeze_low_cost": {} } ], "transitions": [ { "state_name": "delete", "conditions": { "min_index_age": "7d" } } ] }, { "name": "delete", "actions": [ { "delete": {} } ], "transitions": [] } ], "ism_template": { "index_patterns": [ "data*" ], "priority": 100 } } } 新建索引模板“template_hot_warm”。 模板定义:新建的所有“data”开头的索引会自动关联上生命周期策略“hot_warm_policy”。 PUT _template/template_hot_warm { "index_patterns": "data*", "settings": { "number_of_replicas": 5, "number_of_shards": 1, "index.plugins.index_state_management.policy_id": "hot_warm_policy" }, "mappings": { "properties": { "name": { "type": "text" } } } } 表1 参数说明 参数 说明 number_of_shards 索引分片数 number_of_replicas 索引分片副本数 index.plugins.index_state_management.policy_id 生命周期的策略名 新建一个索引“data-2022-06-06”,该索引会自动应用索引模板“template_hot_warm”,并通过索引模板的配置与生命周期策略“hot_warm_policy”相关联,实现索引在创建3天后冻结,7天后删除。 POST data-2022-06-06/_bulk {"index":{}} {"name":"name1"} {"index":{}} {"name":"name2"} {"index":{}} {"name":"name3"} {"index":{}} {"name":"name4"} {"index":{}} {"name":"name5"} {"index":{}} {"name":"name6"} 查询数据,确认数据是否实现自动存算分离。 在索引创建三天后查看冻结的索引: GET _cat/freeze_indices?s=i&v 正常情况下会显示3天以前的索引已经被冻结: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open data-2022-06-06 x8ab5NX6T3Ox_xoGUanogQ 1 1 6 0 7.6kb 3.8kb 在索引创建7天后,查看索引情况,正常情况下7天以前的索引已经被删除。
  • 约束限制 备份与恢复索引功能上线之前(即2018年3月10日之前)创建的集群,无法创建快照。 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。 当集群处于“不可用”状态时,快照功能中,除了恢复快照功能外,其他快照信息或功能只能查看,无法进行编辑。 备份与恢复过程中,支持集群扩容(如果是恢复至本集群,则本集群不支持扩容)、访问Kibana、查看监控、删除其他快照的操作。不支持重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。 快照在恢复过程中不可查询集群数据。 当两个集群的shard不一样时,则无法恢复集群数据。 用于恢复的目标集群版本不得低于源集群版本,一般保持版本一致即可。
  • 功能介绍 云搜索 服务的向量检索引擎集成了暴力检索、图索引(HNSW)、乘积量化、IVF-HNSW等多种向量索引,支持欧式、内积、余弦、汉明等多种相似度计算方式,召回率和检索性能均优于开源引擎。能够满足高性能、高精度、低成本、多模态等多种应用场景及需求。 向量检索支持原生Elasticsearch的所有能力,包括分布式、多副本、错误恢复、快照、权限控制等;兼容所有原生Elasticsearch生态,包括集群监测工具Cerebro,可视化工具Kibana,实时数据采集工具Logstash等;提供Python/Java/Go/C++等多种客户端语言支持。
  • 原理说明 向量检索从本质上讲,其思维框架和传统的检索方法没有区别。为了提升向量检索的性能,通常需要解决以下两个问题: 减少候选向量集 和传统的文本检索类似,向量检索也需要某种索引结构来避免在全量的数据上做匹配,传统文本检索是通过倒排索引来过滤掉无关文档,而向量检索是通过对向量建立索引结构来绕过不相关的向量,减小需要考察的范围。 降低单个向量计算的复杂度 向量检索支持漏斗模型,先对所有向量进行量化和近似计算,筛选出一定量接近检索目标的数据集,然后基于筛选的数据集进行精细的计算和排序。本方法不需要对所有向量都进行复杂的计算,可以有效提高检索效率。 向量检索即在一个给定的向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。
  • 场景描述 通过切换冷热数据,可以将部分现查要求秒级返回的数据放在高性能机器上面作为热数据,对于历史数据要求分钟级别返回的数据放在大容量低规格节点作为冷数据。冷热数据切换可以减低存储成本,提升搜索效率。 图1 切换冷热数据原理 在创建集群时,启用的冷数据节点会被打上“cold”标签,用来存放冷数据,数据节点会被打上“hot”标签,用于存放热数据。用户可以通过配置指定索引,将数据分配到冷数据节点上。只有集群存在冷数据节点时,数据节点才会被打上热标签。 冷数据节点只有在创建集群时可以选择启用,已建集群不支持添加冷数据节点,如果集群没有冷数据节点又想切换冷热数据,可以使用存算分离功能,具体操作请参见配置Elasticsearch集群存算分离。 冷数据节点支持节点数量扩缩容和磁盘存储容量的扩容,具体操作请参见扩缩容Elasticsearch集群。
  • 通过索引生命周期管理实现存算分离 登录云搜索服务管理控制台。 在左侧导航栏,选择对应的集群类型,进入集群列表页面。 在集群列表页面中,单击集群操作列的“Kibana”登录Kibana页面。 在Kibana的左侧导航中选择“Dev Tools”,进入命令执行页面。 创建生命周期策略“hot_warm_policy”。 策略定义:当索引创建3天后,自动调用冻结索引API将数据转储到OBS;索引创建7天后,删除该索引。 PUT _opendistro/_ism/policies/hot_warm_policy { "policy": { "description": "hot warm delete workflow", "error_notification": null, "default_state": "hot", "states": [ { "name": "hot", "actions": [], "transitions": [ { "state_name": "warm", "conditions": { "min_index_age": "3d" } } ] }, { "name": "warm", "actions": [ { "freeze_low_cost": {} } ], "transitions": [ { "state_name": "delete", "conditions": { "min_index_age": "7d" } } ] }, { "name": "delete", "actions": [ { "delete": {} } ], "transitions": [] } ] } } 新建索引模板“template_hot_warm”。 模板定义:新建的所有“data”开头的索引会自动关联上生命周期策略“hot_warm_policy”。 PUT _template/template_hot_warm { "index_patterns": "data*", "settings": { "number_of_replicas": 5, "number_of_shards": 1, "opendistro.index_state_management.policy_id": "hot_warm_policy" }, "mappings": { "properties": { "name": { "type": "text" } } } } 表1 参数说明 参数 说明 number_of_shards 索引分片数 number_of_replicas 索引分片副本数 opendistro.index_state_management.policy_id 生命周期的策略名 新建一个索引“data-2022-06-06”,该索引会自动应用索引模板“template_hot_warm”,并通过索引模板的配置与生命周期策略“hot_warm_policy”相关联,实现索引在创建3天后冻结,7天后删除。 POST data-2022-06-06/_bulk {"index":{}} {"name":"name1"} {"index":{}} {"name":"name2"} {"index":{}} {"name":"name3"} {"index":{}} {"name":"name4"} {"index":{}} {"name":"name5"} {"index":{}} {"name":"name6"} 查询数据,确认数据是否实现自动存算分离。 在索引创建三天后查看冻结的索引: GET _cat/freeze_indices?s=i&v 正常情况下会显示3天以前的索引已经被冻结: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open data-2022-06-06 x8ab5NX6T3Ox_xoGUanogQ 1 1 6 0 7.6kb 3.8kb 在索引创建7天后,查看索引情况,正常情况下7天以前的索引已经被删除。
  • 原理说明 向量检索从本质上讲,其思维框架和传统的检索方法没有区别。为了提升向量检索的性能,通常需要解决以下两个问题: 减少候选向量集 和传统的文本检索类似,向量检索也需要某种索引结构来避免在全量的数据上做匹配,传统文本检索是通过倒排索引来过滤掉无关文档,而向量检索是通过对向量建立索引结构来绕过不相关的向量,减小需要考察的范围。 降低单个向量计算的复杂度 向量检索支持漏斗模型,先对所有向量进行量化和近似计算,筛选出一定量接近检索目标的数据集,然后基于筛选的数据集进行精细的计算和排序。本方法不需要对所有向量都进行复杂的计算,可以有效提高检索效率。 向量检索即在一个给定的向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。
  • 功能介绍 云搜索服务的向量检索引擎集成了暴力检索、图索引(HNSW)、乘积量化、IVF-HNSW等多种向量索引,支持欧式、内积、余弦、汉明等多种相似度计算方式,召回率和检索性能均优于开源引擎。能够满足高性能、高精度、低成本、多模态等多种应用场景及需求。 向量检索支持原生Elasticsearch的所有能力,包括分布式、多副本、错误恢复、快照、权限控制等;兼容所有原生Elasticsearch生态,包括集群监测工具Cerebro,可视化工具Kibana,实时数据采集工具Logstash等;提供Python/Java/Go/C++等多种客户端语言支持。
  • 复合查询 向量检索支持与其他ES子查询组合进行复合查询,比如布尔查询、后置过滤等。 以下两个示例的查询结果:首先查询top10条与查询向量距离最近的结果,filter作为过滤条件将仅保留my_label字段为“red”的结果。 布尔查询示例 POST my_index/_search { "size": 10, "query": { "bool": { "must": { "vector": { "my_vector": { "vector": [1, 2], "topk": 10 } } }, "filter": { "term": { "my_label": "red" } } } } } 后置过滤示例 GET my_index/_search { "size": 10, "query": { "vector": { "my_vector": { "vector": [1, 2], "topk": 10 } } }, "post_filter": { "term": { "my_label": "red" } } }
  • ScriptScore查询 写入向量数据后,针对向量字段可以使用ScriptScore进行最近邻查询,查询语法如下所示。 前置过滤条件可以为任意查询,script_score仅针对前置过滤的结果进行遍历,计算向量相似度并排序返回。此种查询方式的性能取决于前置过滤后中间结果集的大小,当前置过滤条件为"match_all"时,相当于全局暴力检索。 POST my_index/_search { "size":2, "query": { "script_score": { "query": { "match_all": {} }, "script": { "source": "vector_score", "lang": "vector", "params": { "field": "my_vector", "vector": [1.0, 2.0], "metric": "euclidean" } } } } } 表3 script_score参数说明 参数 说明 source script脚本描述,使用向量相似度打分时为固定值"vector_score"。 lang script语法描述,使用固定值"vector"。 field 向量字段名称。 vector 查询向量数据。 metric 度量方式,可选值为:euclidean、inner_product、cosine、hamming。 默认值:euclidean。
  • Painless语法扩展查询 CSS 扩展实现了多种向量距离计算函数,可在自定义的painless脚本中直接使用,用以构建灵活的重打分公式。 示例如下: POST my_index/_search { "size": 10, "query": { "script_score": { "query": { "match_all": {} }, "script": { "source": "1 / (1 + euclidean(params.vector, doc[params.field]))", "params": { "field": "my_vector", "vector": [1, 2] } } } } } 表5 支持的距离计算函数 函数签名 说明 euclidean(Float[], DocValues) 欧式距离函数。 cosine(Float[], DocValues) 余弦相似度函数。 innerproduct(Float[], DocValues) 内积函数。 hamming(String, DocValues) 汉明距离函数。只支持"dim_type"为"binary"的向量字段,输入的查询向量需要为Base64编码字符串格式。
  • 标准查询 针对创建了向量索引的向量字段,提供了标准向量查询语法。下述查询命令将会返回所有数据中与查询向量最近的size(topk)条数据。 POST my_index/_search { "size":2, "_source": false, "query": { "vector": { "my_vector": { "vector": [1, 1], "topk":2 } } } } 表1 标准查询的参数说明 参数 说明 vector(第一个) 表示该查询类型为VectorQuery。 my_vector 指定了需要查询的向量字段名称。 vector(第二个) 指定查询向量的具体值,支持数组形式以及Base64编码形式的输入。 topk topk的值通常与size保持一致。 其他可选的查询参数 通过调整不同索引的查询参数,可以获得更高的查询性能或者查询精度,其他参数请参见表2。 表2 可选的查询参数说明 参数 子参数 说明 GRAPH类索引配置参数 ef 查询时考察邻居节点的队列大小。值越大查询精度越高,查询速度会变慢。默认值为200。 取值范围:(0, 100000]。 max_scan_num 扫描节点上限。值越大精度越高,查询速度变慢。默认值为10000。 取值范围:(0, 1000000]。 IVF类索引配置参数 nprobe 查询考察中心点的数目。值越大精度越高,查询速度变慢。默认值为100。 取值范围:(0, 100000]。
  • 重打分查询 当使用GRAPH_PQ索引或者IVF_GRAPH_PQ索引时,查询结果是根据PQ计算的非对称距离进行排序。 CS S支持Rescore的方式对查询结果进行重打分精排,提升召回率。 假设my_index是PQ类型的索引,Rescore示例如下: GET my_index/_search { "size": 10, "query": { "vector": { "my_vector": { "vector": [1.0, 2.0], "topk": 100 } } }, "rescore": { "window_size": 100, "vector_rescore": { "field": "my_vector", "vector": [1.0, 2.0], "metric": "euclidean" } } } 表4 Rescore参数说明 参数 说明 window_size 向量检索将会返回topk条结果,仅取前window_size条结果精排。 field 向量字段名称。 vector 查询向量数据。 metric 度量方式,可选值为:euclidean、inner_product、cosine、hamming。 默认值:euclidean。
  • 查询同步状态 获取自动同步状态 该接口可以获取匹配索引同步的状态。 请求示例如下: GET auto_sync/stats 接口返回示例如下: { "success_count" : 3, "failed_count" : 0, "failed_remote_cluster_state_requests_count" : 0, "last_fail_exception" : { }, "last_fail_remote_cluster_requests_exception" : { } } 获取指定索引的自动同步状态 请求示例如下: GET {index_name}/sync_stats 接口返回示例如下: { "indices" : { "data1_follower" : { "shards" : { "0" : [ { "primary" : false, "total_synced_times" : 27, "total_empty_times" : 25, "total_synced_files" : 4, "total_synced_bytes" : 3580, "total_paused_nanos" : 0, "total_paused_times" : 0, "current" : { "files_count" : 0, "finished_files_count" : 0, "bytes" : 0, "finished_bytes" : 0 } }, { "primary" : true, "total_synced_times" : 28, "total_empty_times" : 26, "total_synced_files" : 20, "total_synced_bytes" : 17547, "total_paused_nanos" : 0, "total_paused_times" : 0, "current" : { "files_count" : 0, "finished_files_count" : 0, "bytes" : 0, "finished_bytes" : 0 } } ] } } } }
  • 主从切换 当主集群出现故障时,支持通过主从切换保证业务正常进行。 判断主从集群的索引同步方式。查询从集群是否有索引同步的匹配模式,命令参考查询并删除集群匹配模式。 如果没有匹配模式,则表示主从集群是指定索引同步关系,则执行3。 如果有匹配模式,则表示主从集群是模式匹配索引同步关系,则执行2。 删除从集群的索引同步的匹配模式,命令参考查询并删除集群匹配模式。 从集群停止索引同步,将读写流量切换到从集群。如果主从集群是匹配索引同步关系,停止索引同步命令使用通配符匹配索引。 当主集群恢复后,通过索引同步将从集群数据向主集群同步,完成主从切换。
  • 查询并删除集群匹配模式 在从集群执行如下命令,查询已创建的匹配模式。 列表查询 GET auto_sync/pattern 指定名称查询 GET auto_sync/pattern/{PATTERN} 接口返回示例如下: { "patterns" : [ { "name" : "pattern1", "pattern" : { "remote_cluster" : "leader", "remote_index_patterns" : [ "log*" ], "local_index_pattern" : "{{remote_index}}-sync", "settings" : { } } } ] } 在从集群执行如下命令,指定模式名称删除模式。 DELETE auto_sync/pattern/{PATTERN}
  • 开启强制同步 开启强制同步 插件默认根据主集群索引的文档数是否发生变化来决定是否要同步元数据,当主集群只对文档进行更新且文档数不变时,插件不会同步该更新到从集群。支持修改配置,开启后,每个同步周期从集群都会强制同步主集群的索引元数据。 请求示例如下(开启强制同步): PUT _cluster/settings { "persistent": { "remote_sync.force_synchronize": true } }
  • 场景描述 读写分离支持将写入主集群(Leader)的数据自动同步到从集群(Follower),实现主集群承担写入任务,从集群承担查询任务。读写分离可以将读写压力分开,提高查询的性能。当主集群无法提供服务时,可以通过主从切换使用从集群提供写入和查询服务,保证业务可以正常进行。 图1 读写分离特性的两种使用场景 场景一(图左):主集群写入,从集群查询,分离读写压力。 场景二(图右):主集群故障时,从集群升级,正常提供服务,避免业务中断。
  • 连接主从集群 登录云搜索服务管理控制台。 在“集群管理”页面选择从集群,单击操作列“Kibana”,登录Kibana页面。 单击左侧导航栏的“Dev Tools”进入操作页面 执行如下命令,在从集群配置主集群的信息。 PUT /_cluster/settings { "persistent" : { "cluster" : { "remote.rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] , "username": "elastic", "password": "*****" } } } } } 表1 请求体参数说明 参数名 说明 leader1 主集群配置任务的名称,由用户自定义,在后续读写分离配置时会用到该名称。 seeds 主集群的访问地址。当集群开启HTTPS访问时,URL schema需要对应使用https。 username 主集群的用户名,仅主集群是安全集群时才需要配置。 password 主集群的密码,仅主集群是安全集群时才需要配置。 返回示例: { "acknowledged" : true, // 是否成功 "persistent" : { "cluster" : { "remote" : { "rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] , "username": "elastic", "password": "*****" } } } } }, "transient" : { } } 配置完成后,在从集群执行如下命令确认从集群和主集群的连接状况。 GET _remote/rest/info 返回示例: { "leader1" : { "connected" : true //表示连接正常 } }
  • 索引同步 索引同步有2种方式:指定索引同步和匹配索引同步。 开启索引同步后,从集群的索引会变为只读状态,并且定时与主集群索引同步。同步周期默认30秒,如果需要修改请参见修改同步周期。 指定索引同步 在从集群执行如下命令,将主集群的单个索引同步到从集群,不修改索引配置。 PUT start_remote_sync { "remote_cluster": "leader1", "remote_index": "data1_leader", "local_index": "data1_follower" } 在从集群执行如下命令,将主集群的单个索引同步到从集群,并修改部分索引配置,开启索引配置同步。 PUT start_remote_sync { "remote_cluster": "leader1", "remote_index": "data1_leader", "local_index": "data1_follower", "settings": { "number_of_replicas": 4 }, "settings_sync_enable": true, "settings_sync_patterns": ["*"], "settings_sync_exclude_patterns": ["index.routing.allocation.*"], "alias_sync_enable": true, "state_sync_enable": true } 以下索引配置不支持修改:“number_of_shards”、“version.created”、“uuid”、“creation_date”、“soft_deletes.enabled”。 表2 请求体参数说明 参数名 说明 remote_cluster 主集群配置任务的名称,在连接主从集群时设置,例如本文设置的是“leader1”。 remote_index 主集群待同步索引名称。 local_index 同步到从集群的索引名称。 settings 同步索引的索引设置。 settings_sync_enable 开启主集群索引设置同步,默认为“false”。 settings_sync_patterns 要同步的主集群索引设置前缀,默认为“*”,当“settings_sync_enable”为“true”时生效,“settings”中配置的索引设置不会同步。 settings_sync_exclude_patterns 不需要同步的主集群索引设置前缀,默认为空,“settings_sync_enable”为“true”时生效。 alias_sync_enable 开启主集群索引别名同步,默认为“false”。 state_sync_enable 开启主集群索引状态同步,默认为“false”。 匹配索引同步 在从集群执行如下命令,创建匹配模式同步索引,将主集群中匹配的索引同步到从集群。 PUT auto_sync/pattern/${PATTERN} { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}-sync", "apply_exist_index": true } 在从集群执行如下命令,创建匹配模式同步索引,将主集群中匹配的索引同步到从集群,并修改部分索引配置,开启索引配置同步。 PUT auto_sync/pattern/${PATTERN} { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}-sync", "apply_exist_index": true, "settings": { "number_of_replicas": 4 }, "settings_sync_enable": true, "settings_sync_patterns": ["*"], "settings_sync_exclude_patterns": ["index.routing.allocation.*"], "alias_sync_enable": true, "state_sync_enable": true } 以下索引配置不支持修改:“number_of_shards”、“version.created”、“uuid”、“creation_date”、“soft_deletes.enabled”。 表3 请求体参数说明 参数名 说明 PATTERN 同步集群配置的pattern名字,用于区分多个不同的匹配模式。 remote_cluster 主集群配置任务的名称,通过连接主从集群设置,具体值如上文的“leader1”。 remote_index_patterns 主集群待同步索引模式,支持通配符“*”。 local_index_pattern 同步到从集群的索引模式,支持模板替换。例如取值为“{{remote_index}}-sync”时,待同步索引为“log1”,同步过来的索引为“log1-sync”。 apply_exist_index 是否同步主集群上已存在的索引,默认为“true”。 settings 同步索引的索引设置。 settings_sync_enable 开启主集群索引设置同步,默认为“false”。 settings_sync_patterns 要同步的主集群索引设置前缀,默认为“*”,当“settings_sync_enable”为“true”时生效,“settings”中配置的索引设置不会同步。 settings_sync_exclude_patterns 不需要同步的主集群索引设置前缀,默认为空,“settings_sync_enable”为“true”时生效。 alias_sync_enable 开启主集群索引别名同步,默认为“false”。 state_sync_enable 开启主集群索引状态同步,默认为“false”。
  • 约束限制 备份与恢复索引功能上线之前(即2018年3月10日之前)创建的集群,无法创建快照。 集群快照会导致CPU、磁盘IO上升等影响,建议在业务低峰期进行操作。 当集群处于“不可用”状态时,快照功能中,除了恢复快照功能外,其他快照信息或功能只能查看,无法进行编辑。 备份与恢复过程中,支持集群扩容(如果是恢复至本集群,则本集群不支持扩容)、访问Kibana、查看监控、删除其他快照的操作。不支持重启此集群、删除此集群、删除正在创建或恢复的快照、再次创建或恢复快照的操作。当此集群正在进行创建快照或者恢复快照过程中,同时的自动创建快照任务将被取消。 快照在恢复过程中不可查询集群数据。 当两个集群的shard不一样时,则无法恢复集群数据。 用于恢复的目标集群版本不得低于源集群版本,一般保持版本一致即可。
  • 查询存储冷数据的OBS实时速率 仅2023年02月后创建的Elasticsearch 7.6.2、Elasticsearch 7.10.2和OpenSearch 1.3.6集群支持提升冷数据的查询性能。 为了更清晰的了解到存算分离的插件在OBS中的使用情况,CSS服务新增了OBS实时速率的统计接口,并且将实时速率记录到系统索引“.freeze_obs_rate-YYYY.mm.dd”中。 OBS实时速率的计算方式:每5秒计算一次,查询前5秒内的平均OBS操作速率。 系统索引“.freeze_obs_rate-YYYY.mm.dd”用于存放OBS操作实时速率和OBS操作数据,便于了解存储冷数据的OBS的操作趋势。该索引的默认保留时间是30天。 查询存储冷数据的OBS实时速率。 执行如下命令,查询所有节点中存储冷数据的OBS实时速率。 GET _frozen_stats/obs_rate 执行如下命令,查询指定节点中存储冷数据的OBS实时速率。 GET _frozen_stats/obs_rate/{nodeId} “{nodeId}”为节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "elasticsearch", "nodes" : { "dflDvcSwTJ-fkiIlT2zE3A" : { "name" : "node-1", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1", "update_time" : 1671777600482, // 当前统计值的更新时间。 "obs_rate" : { "list_op_rate" : 0.0, // obs list操作的速率,单位:次/秒。 "get_meta_op_rate" : 0.0, // obs get meta操作的速率,单位:次/秒。 "get_obj_op_rate" : 0.0, // obs get操作的速率,单位:次/秒。 "put_op_rate" : 0.0, // obs put操作的速率,单位:次/秒。 "obs_total_op_rate" : 0.0, // obs所有操作的速率,单位:次/秒。 "obs_upload_rate" : "0.0 MB/s", // obs上传数据的速率,MB/秒。 "obs_download_rate" : "0.0 MB/s" // obs下载数据的速率,MB/秒。 } } } } 修改存储OBS实时速率的索引“.freeze_obs_rate-YYYY.mm.dd”的保留时间。索引的默认保留时间是30天。 执行如下命令,将索引保留时间改成7天。 PUT _cluster/settings { "persistent": { "low_cost.obs_rate_index.evict_time": "7d" } } 表11 配置项说明 配置项 类型 scope 是否可动态修改 说明 low_cost.obs_rate_index.evict_time String node 是 用于控制索引“.freeze_obs_rate-YYYY.mm.dd”的保留时间。 取值范围:1d~365d。 默认值:30d。 单位:天。
  • 查询存储在OBS中冷数据的缓存状态 冻结索引之后,当冷数据第一次被查询时,系统会自动进行数据缓存,集群支持查询存储在OBS中冷数据的缓存状态。当需要调试集群性能时,也可以重置缓存状态。 查询节点中存储在OBS中冷数据的缓存状态。 执行如下命令,查询所有节点中冷数据的缓存信息。 GET _frozen_stats 执行如下命令,查询指定节点中冷数据的缓存信息。 GET _frozen_stats/${node_id} 表9 请求参数说明 参数名 说明 node_id 节点ID。 返回结果如下: { "_nodes" : { "total" : 3, // 所有节点数量 "successful" : 3, // 成功的节点数量 "failed" : 0 // 失败的节点数量 }, "cluster_name" : "css-zzz1", // 集群名称 "nodes" : { "7uwKO38RRoaON37YsXhCYw" : { "name" : "css-zzz1-ess-esn-2-1", // 节点名称 "transport_address" : "10.0.0.247:9300", // 节点transport连接地址 "host" : "10.0.0.247", // 节点host "ip" : "10.0.0.247", // 节点IP "block_cache" : { "default" : { "type" : "memory", // cache类型,memory表示内存cache "block_cache_capacity" : 8192, // cache容量 "block_cache_blocksize" : 8192, // cache中单个block大小,单位为bytes,如此处表示8k "block_cache_size" : 12, // cache已被占用的大小 "block_cache_hit" : 14, // cache命中数 "block_cache_miss" : 0, // cache未命中数 "block_cache_eviction" : 0, // cache被逐出次数 "block_cache_store_fail" : 0 // 如果cache满了,可能导致新的cache存储失败,此处表示存储失败的次数 } }, "obs_stats" : { "list" : { "obs_list_count" : 17, // 调用OBS list接口的次数 "obs_list_ms" : 265, // 调用OBS list接口的总耗时 "obs_list_avg_ms" : 15 // 调用OBS list接口的平均耗时 }, "get_meta" : { "obs_get_meta_count" : 79, // 调用OBS 获取元数据接口的次数 "obs_get_meta_ms" : 183, // 调用OBS 获取元数据接口的总耗时 "obs_get_meta_avg_ms" : 2 // 调用OBS 获取元数据接口的平均耗时 }, "get_obj" : { "obs_get_obj_count" : 12, // 调用OBS getObject接口的次数 "obs_get_obj_ms" : 123, // 调用OBS getObject接口的总耗时 "obs_get_obj_avg_ms" : 10 // 调用OBS getObject接口的平均耗时 }, "put_obj" : { "obs_put_obj_count" : 12, // 调用OBS putObject接口的总次数 "obs_put_obj_ms" : 2451, // 调用OBS putObject接口的总耗时 "obs_put_obj_avg_ms" : 204 // 调用OBS putObject接口的平均耗时 }, "obs_op_total" : { "obs_op_total_ms" : 3022, // 调用OBS接口的总耗时 "obs_op_total_count" : 120, // 调用OBS接口的总次数 "obs_op_avg_ms" : 25 // 调用OBS接口的平均耗时 } }, "reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 291194714, "eviction_count" : 0 } }, "73EDpEqoQES749umJqxOzQ" : { "name" : "css-zzz1-ess-esn-3-1", "transport_address" : "10.0.0.201:9300", "host" : "10.0.0.201", "ip" : "10.0.0.201", "block_cache" : { "default" : { "type" : "memory", "block_cache_capacity" : 8192, "block_cache_blocksize" : 8192, "block_cache_size" : 12, "block_cache_hit" : 14, "block_cache_miss" : 0, "block_cache_eviction" : 0, "block_cache_store_fail" : 0 } }, "obs_stats" : { "list" : { "obs_list_count" : 17, "obs_list_ms" : 309, "obs_list_avg_ms" : 18 }, "get_meta" : { "obs_get_meta_count" : 79, "obs_get_meta_ms" : 216, "obs_get_meta_avg_ms" : 2 }, "get_obj" : { "obs_get_obj_count" : 12, "obs_get_obj_ms" : 140, "obs_get_obj_avg_ms" : 11 }, "put_obj" : { "obs_put_obj_count" : 12, "obs_put_obj_ms" : 1081, "obs_put_obj_avg_ms" : 90 }, "obs_op_total" : { "obs_op_total_ms" : 1746, "obs_op_total_count" : 120, "obs_op_avg_ms" : 14 } }, "reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 367179751, "eviction_count" : 0 } }, "EF8WoLCUQbqJl1Pkqo9-OA" : { "name" : "css-zzz1-ess-esn-1-1", "transport_address" : "10.0.0.18:9300", "host" : "10.0.0.18", "ip" : "10.0.0.18", "block_cache" : { "default" : { "type" : "memory", "block_cache_capacity" : 8192, "block_cache_blocksize" : 8192, "block_cache_size" : 12, "block_cache_hit" : 14, "block_cache_miss" : 0, "block_cache_eviction" : 0, "block_cache_store_fail" : 0 } }, "obs_stats" : { "list" : { "obs_list_count" : 17, "obs_list_ms" : 220, "obs_list_avg_ms" : 12 }, "get_meta" : { "obs_get_meta_count" : 79, "obs_get_meta_ms" : 139, "obs_get_meta_avg_ms" : 1 }, "get_obj" : { "obs_get_obj_count" : 12, "obs_get_obj_ms" : 82, "obs_get_obj_avg_ms" : 6 }, "put_obj" : { "obs_put_obj_count" : 12, "obs_put_obj_ms" : 879, "obs_put_obj_avg_ms" : 73 }, "obs_op_total" : { "obs_op_total_ms" : 1320, "obs_op_total_count" : 120, "obs_op_avg_ms" : 11 } }, "reader_cache" : { "hit_count" : 0, "miss_count" : 1, "load_success_count" : 1, "load_exception_count" : 0, "total_load_time" : 235706838, "eviction_count" : 0 } } } } 执行如下命令,可以重置缓存状态。 POST _frozen_stats/reset 此命令主要用于调试性能问题,例如重置缓存状态后再次执行查询可以清晰看到本次查询的缓存命令情况。在业务运行阶段不需要执行此命令。 返回结果如下: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "Es-0325-007_01", "nodes" : { "mqTdk2YRSPyOSXfesREFSg" : { "result" : "ok" } } }
  • 提升冷数据的查询性能 仅2023年02月后创建的Elasticsearch 7.6.2、Elasticsearch 7.10.2和OpenSearch 1.3.6集群支持提升冷数据的查询性能。 在Kibana的Discover页面首次查询冷数据时,由于此时无任何缓存,导致所有数据均需要从OBS上获取,当命中的数据较多时,需要耗费大量的时间从OBS上获取对应的时间字段以及文件元数据。如果将这一部分数据直接缓存在本地,即可大幅提升查询性能,解决Discover页面首次查询慢的问题。云搜索服务就是通过冷数据的本地缓存,实现冷数据的查询性能提升。本地缓存配置是预置的,用户可以基于业务场景修改配置,也可以查询、了解本地缓存信息。 修改冷数据的本地缓存配置。 表10 本地缓存配置项说明 配置项 类型 scope 是否可动态修改 说明 low_cost.local_cache.max.capacity Integer node 是 节点上,能够打开的冷数据缓存的最大数量。(每个shard对应一个缓存对象) 取值范围:10~5000 默认值:500 说明: 当堆内存使用率一直很高时,可以尝试降低该值。 当查询冷数据本地缓存的相关统计指标中load_overflow_count数值一直持续快速增加时,建议调大该值。 index.low_cost.local_cache.threshold Integer index 是 启用冷数据本地缓存的阈值。 当date类型字段的占比小于此值时,启用冷数据本地缓存date类型字段。否则不使用。 如果当前索引的date类型字段占据当前索引的绝大部分数据量,则不建议使用此功能。 单位:% 取值范围:0~100 默认值:50 index.low_cost.local_cache.evict_time 字符串 index 是 冷数据的本地缓存的淘汰时间,当缓存时间大于该值,缓存将被删除。根据index.frozen_date(冻结成功的时间)判定,当索引无index.frozen_date时,则根据索引创建时间判定。 单位:天 取值范围:1d~365d 默认值:30d 说明: 建议根据磁盘用量调整淘汰时长,节省磁盘空间。 执行如下命令,修改“low_cost.local_cache.max.capacity”。 PUT _cluster/settings { "persistent": { "low_cost.local_cache.max.capacity":1000 } } 执行如下命令,修改“index.low_cost.local_cache.threshold”。 PUT es_write_pref2-00000000021/_settings { "index.low_cost.local_cache.threshold":20 } 执行如下命令,修改“index.low_cost.local_cache.evict_time”。 PUT es_write_pref2-00000000021/_settings { "index.low_cost.local_cache.evict_time":"7d" } 查询冷数据的本地缓存信息。 执行如下命令,查询所有节点中冷数据的本地缓存相关指标。 GET /_frozen_stats/local_cache 执行如下命令,查询指定节点中冷数据的本地缓存相关指标。 GET /_frozen_stats/local_cache/{nodeId} “{nodeId}”为节点ID。 返回结果如下: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "elasticsearch", "nodes" : { "6by3lPy1R3m55Dcq3liK8Q" : { "name" : "node-1", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1", "local_cache" : { "get_stats" : { "get_total_count" : 562, //从冷数据本地缓存查询数据的总次数 "get_hit_count" : 562, //从冷数据本地缓存查询数据命中的次数 "get_miss_count" : 0, //从冷数据本地缓存查询数据未命中的次数 "get_total_ns" : 43849200, //从冷数据本地缓存查询数据的总时长 "get_avg_ns" : 78023 //从冷数据本地缓存查询数据的平均时长 }, "load_stats" : { "load_count" : 2, //加载冷数据本地缓存的次数 "load_total_ms" : 29, //加载冷数据本地缓存的总时长 "load_avg_ms" : 14, //加载冷数据本地缓存的平均时长 "load_fail_count" : 0, //加载冷数据本地缓存的失败次数 "load_overflow_count" : 0 //加载冷数据本地缓存时超过缓存池的次数 }, "reload_stats" : { "reload_count" : 0, //重新生成冷数据本地缓存的次数 "reload_total_ms" : 0, //重新生成冷数据本地缓存的总时长 "reload_avg_ms" : 0, //重新生成冷数据本地缓存的平均时长 "reload_fail_count" : 0 //重新生成冷数据本地缓存的失败次数 }, "init_stats" : { "init_count" : 0, //初始化冷数据本地缓存的次数 "init_total_ms" : 0, //初始化冷数据本地缓存的总时长 "init_avg_ms" : 0, //初始化冷数据本地缓存的平均时长 "init_fail_count" : 0 //初始化冷数据本地缓存的失败次数 } } } } }
  • 查看冻结索引任务 执行如下命令,查看冻结索引任务的进度。 GET _freeze_low_cost_progress/${freeze_uuid} 表3 请求参数说明 参数名 说明 freeze_uuid 冻结索引任务的ID,该ID由冻结索引时获取。 返回结果如下: { "stage" : "STARTED", "shards_stats" : { "INIT" : 0, "FAILURE" : 0, "DONE" : 0, "STARTED" : 3, "ABORTED" : 0 }, "indices" : { "data1" : [ { "uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : { "name" : "data1", "index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 2 }, "start_ms" : 1611972010852, "end_ms" : -1, "total_time" : "10.5s", "total_time_in_millis" : 10505, "stage" : "STARTED", "failure" : null, "size" : { "total_bytes" : 3211446689, "finished_bytes" : 222491269, "percent" : "6.0%" }, "file" : { "total_files" : 271, "finished_files" : 12, "percent" : "4.0%" }, "rate_limit" : { "paused_times" : 1, "paused_nanos" : 946460970 } }, { "uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : { "name" : "data1", "index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 0 }, "start_ms" : 1611972010998, "end_ms" : -1, "total_time" : "10.3s", "total_time_in_millis" : 10359, "stage" : "STARTED", "failure" : null, "size" : { "total_bytes" : 3221418186, "finished_bytes" : 272347118, "percent" : "8.0%" }, "file" : { "total_files" : 372, "finished_files" : 16, "percent" : "4.0%" }, "rate_limit" : { "paused_times" : 5, "paused_nanos" : 8269016764 } }, { "uuid" : "7OS-G1-tRke2jHZPlckexg", "index" : { "name" : "data1", "index_id" : "4b5PHXJITLaS6AurImfQ9A", "shard" : 1 }, "start_ms" : 1611972011021, "end_ms" : -1, "total_time" : "10.3s", "total_time_in_millis" : 10336, "stage" : "STARTED", "failure" : null, "size" : { "total_bytes" : 3220787498, "finished_bytes" : 305789614, "percent" : "9.0%" }, "file" : { "total_files" : 323, "finished_files" : 14, "percent" : "4.0%" }, "rate_limit" : { "paused_times" : 3, "paused_nanos" : 6057933087 } } ] } } 表4 返回参数说明 参数名 说明 stage 当前所处状态。取值包括: INIT:刚启动或者正在初始化。 FAILURE:失败。 DONE:完成。 STARTED:已启动。 ABORTED:取消,预留字段。 shards_stats 处在各个状态的shard个数。 indices 每个索引的状态详情。 表5 indices返回值说明 参数名 说明 uuid freeze的uuid。 index 索引信息和shard信息。 start_ms 开始时间。 end_ms 结束时间,如果没有结束则显示为-1。 total_time 已花费时间。 total_time_in_millis 已花费时间毫秒数。 stage 当前shard所处的状态。 failure 失败原因,如果没有失败则显示为null。 size.total_bytes 总共需要冻结的文件的字节数。 size.finished_bytes 已经完成冻结的字节数。 size.percent 已经完成冻结的字节数百分比。 file.total_bytes 总共需要冻结的文件个数。 file.finished_bytes 已经完成冻结的文件个数。 file.percent 已经完成冻结的文件个数百分比。 rate_limit.paused_times 达到限速导致冻结暂停的次数。 rate_limit.paused_nanos 达到限速导致冻结暂停的时间纳秒数。 冻结完成的索引会增加以下settings,可参考表6。 表6 冻结索引settings 参数 说明 index.frozen_low_cost 标识该索引为冻结索引。取值为true。 index.blocks.write 冻结后的索引禁止写入。取值为true。 index.store.type 标识该索引的存储类型为obs。取值为obs。
  • 基于冻结状态查询索引列表 执行如下命令,基于冻结状态查询索引列表。 GET _cat/freeze_indices?stage=${STAGE} 表7 请求参数说明 参数名 说明 STAGE 索引的冻结状态,可选值如下: start:开始冻结但是还未完成的索引列表 done: 已经完成冻结的索引列表 unfreeze:没有冻结的索引列表 空或者其他值:正在冻结过程中或者已经冻结完成的所有索引列表 返回结果如下: green open data2 0bNtxWDtRbOSkS4JYaUgMQ 3 0 5 0 7.9kb 7.9kb green open data3 oYMLvw31QnyasqUNuyP6RA 3 0 51 0 23.5kb 23.5kb 此命令的参数和返回值与开源Elasticsearch的_cat/indices一致。
  • 约束限制 仅Elasticsearch 7.6.2、Elasticsearch 7.10.2、OpenSearch 1.3.6集群支持存算分离。 在执行冻结索引前,系统会将待冻结的索引配置为只读状态,即便在索引数据转储到OBS后,索引也是只读状态,不支持写入数据。 在冻结索引过程中,查询请求不受影响。在冻结完成后,会将索引先Close再Open,在这段时间内,索引不可查询,集群可能短暂出现Red状态,索引Open结束后集群恢复正常。 将历史索引数据转储到OBS的过程中会占用网络带宽。 冻结索引后,索引会被转储到OBS中,同时本地磁盘中的索引数据会被删除。当查询被冻结的索引时,时延会增加,在聚合时,由于查询复杂、数据读取多,时延变长会更明显。 已转储到OBS中的索引不支持解冻,即不可回退为可写的索引。 由于存算分离的特性依赖OBS,所以使用过程中要遵守OBS的“带宽”和“每秒请求数(QPS)”的使用限制,详细请参见OBS使用限制。当超过限制时,集群中涉及到OBS查询的性能都会下降,例如恢复分片的速度变慢、查询数据时变慢等。
共100000条