华为云用户手册

  • 请求方法 HTTP请求方法(也称为操作或动词),表示服务正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在管理员创建 IAM 用户的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json;charset=utf8”,有其他取值时会在具体接口中专门说明。 Authorization:签名认证信息,可选,当使用AK/SK方式认证时,使用SDK对请求进行签名的过程中会自动填充该字段。AK/SK认证的详细说明请参见AK/SK认证。 X-Sdk-Date:请求发送的时间,可选,当使用AK/SK方式认证时,使用SDK对请求进行签名的过程中会自动填充该字段。AK/SK认证的详细说明请参见AK/SK认证。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 X-Project-ID:子项目ID,可选,在多项目场景中使用。如果云服务资源创建在子项目中,AK/SK认证方式下,操作该资源的接口调用需要在请求消息头中携带X-Project-ID。 X-Domain-ID:账号ID,可选。AK/SK认证方式下,全局服务的接口调用时,需在请求消息头中携带X-Domain-ID。 对于管理员创建IAM用户接口,使用AK/SK方式认证时,添加消息头后的请求如下所示。 POST https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users Content-Type: application/json X-Sdk-Date: 20240416T095341Z Authorization: SDK-HMAC-SHA256 Access=****************, SignedHeaders=content-type;host;x-sdk-date, Signature=****************
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 URI-scheme:表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint:指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点处获取。例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path:资源路径,也即API访问路径。从具体API的URI模块获取,例如“管理员创建IAM用户”API的resource-path为“/v3.0/OS-USER/users”。 query-string:查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”。例如“limit=10”,表示查询不超过10条数据。 例如您需要获取创建IAM用户,由于IAM为全局服务。则使用任一区域的Endpoint(比如“华北-北京四”区域的Endpoint:iam.cn-north-4.myhuaweicloud.com),并在管理员创建IAM用户的URI部分找到resource-path(/v3.0/OS-USER/users),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/users 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 在续费管理页面开通自动续费 登录管理控制台。 单击“控制台”页面上方“费用”,在下拉菜单中选择“续费管理”。 进入“续费管理”页面。 自定义查询条件。 可在“自动续费项”页签查询已经开通自动续费的资源。 可对“手动续费项”、“到期转按需项”、“到期不续费项”页签的资源开通自动续费。 图2 续费管理 为包年/包月资源开通自动续费。 单个资源开通自动续费:选择需要开通自动续费的弹性云服务器,单击操作列“开通自动续费”。 图3 单个资源开通自动续费 批量资源开通自动续费:选择需要开通自动续费的弹性云服务器,单击列表左上角的“开通自动续费”。 图4 多个资源开通自动续费 选择续费时长,并根据需要设置自动续费次数,单击“开通”。 在“续费管理”页面开通的自动续费,自动续费周期以实际选择的续费时长以及自动续费次数为准。例如:您选择了续费时长3个月,不限次数,即在每次到期前自动续费3个月。 图5 开通自动续费
  • 怎样将资源解冻? 欠费冻结:用户可通过续费或充值来解冻资源,恢复云服务器正常使用。欠费冻结的云服务器允许续费、释放或删除;已经到期的包年/包月云服务器不能发起退订,未到期的包年/包月云服务器可以退订。 违规冻结:违规冻结的云服务器允许续费、释放或删除;已经到期的包年/包月云服务器不能发起退订,未到期的包年/包月云服务器可以退订。 公安冻结:已被公安冻结的云服务器允许续费,不允许释放或删除。被公安冻结的包年/包月云服务器不允许退订,在退订管理页面仍然显示,只是不能退订。
  • 约束与限制 按需计费云服务器绑定的资源(云硬盘、弹性公网IP)可能不支持随云服务器同步变更计费模式,请参考表1和表2查看绑定资源的计费规则及处理措施。 表1 磁盘计费模式变更规则 磁盘类型 计费模式 是否共享 是否支持随E CS 按需转包年/包月 处理措施 本地盘 不涉及 否 不涉及 无。 DSS/DESS下磁盘 包年/包月(存储池计费模式) 否 不涉及 无。 云硬盘 按需计费 否 是(极速型SSD V2类型磁盘不支持) 无。 云硬盘 按需计费 是 否 在控制台的云硬盘页面进行按需转包年/包月操作。 详细内容,请参见云硬盘计费说明。 云硬盘 包年/包月 否 否 已经是包年/包月计费模式,无需处理。 云硬盘 包年/包月 是 否 已经是包年/包月计费模式,无需处理。 表2 弹性公网IP计费模式变更规则 资源 计费模式 计费方式 带宽类型 是否支持随ECS按需转包年/包月 处理措施 弹性公网IP 按需计费 按带宽计费 独享带宽 是 无。 弹性公网IP 按需计费 按流量计费 独享带宽 否 在控制台的弹性公网IP页面,先将按需按流量计费变更为按需按带宽计费,再将按需计费变更为包年/包月。 详细内容,请参见变更弹性公网IP计费方式。 弹性公网IP 按需计费 按带宽计费 共享带宽 否 在控制台的弹性公网IP页面进行按需转包年/包月操作。 详细内容,请参见变更弹性公网IP计费方式。 弹性公网IP 包年/包月 按带宽计费 独享带宽/共享带宽 否 已经是包年/包月计费模式,无需处理。
  • 在费用中心续费 登录管理控制台。 单击“控制台”页面上方“费用”,在下拉菜单中选择“续费管理”。 进入“续费管理”页面。 自定义查询条件。 可在“手动续费项”、“自动续费项”、“到期转按需项”、“到期不续费项”页签查询全部待续费资源,对资源进行手动续费的操作。 图3 续费管理 所有需手动续费的资源都可归置到“手动续费项”页签,具体操作请参见如何恢复为手动续费。 手动续费资源。 单个续费:在资源页面找到需要续费的资源,单击操作列的“续费”。 图4 单个续费 批量续费:在资源页面勾选需要续费的资源,单击列表左上角的“批量续费”。 图5 批量续费 选择云服务器的续费时长,判断是否勾选“统一到期日”,将云服务器到期时间统一到各个月的某一天(详细介绍请参见统一包年/包月资源的到期日)。确认配置费用后单击“去支付”。 图6 续费确认 进入支付页面,选择支付方式,确认付款,支付订单后即可完成续费。
  • 前提条件 已具备安全模式的Elasticsearch集群和MySQL数据库,且两者在同一个VPC与安全组内。 MySQL数据库中已经有待同步的数据。 本文以如下表结构和初始数据举例。 MySQL中创建一个学生信息表: CREATE TABLE `student` ( `dsc` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, `age` smallint unsigned DEFAULT NULL, `name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL, `id` int unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; MySQL中插入3个学生的初始数据: INSERT INTO student (id,name,age,dsc) VALUES ('1','Jack Ma Yun','50','Jack Ma Yun is a business magnate, investor and philanthropist.'), ('2','will smith','22','also known by his stage name the Fresh Prince, is an actor, rapper, and producer.'), ('3','James Francis Cameron','68','the director of avatar'); Elasticsearch集群中已完成索引创建,且与MySQL中表相对应。 本文执行如下命令创建Elasticsearch集群的索引。 PUT student { "settings": { "number_of_replicas": 0, "number_of_shards": 3 }, "mappings": { "properties": { "id": { "type": "keyword" }, "name": { "type": "short" }, "age": { "type": "short" }, "desc": { "type": "text" } } } } 其中的“number_of_shards”与“number_of_replicas”需根据具体业务场景进行配置。
  • 方案优势 以下是使用Elasticsearch加速关系型数据库的方案优势: 全文检索能力提升:Elasticsearch是一个提供了强大的全文检索功能的搜索引擎。关系型数据库通常不擅长进行全文检索,而Elasticsearch可以有效地解决这一问题。 高并发Ad Hoc查询:Elasticsearch设计用于处理大量的并发查询请求,特别是在Ad Hoc查询场景下,它能够提供快速的响应时间,从而满足高并发环境下的查询需求。 实时数据同步:通过华为云 数据复制服务 DRS,可以实现MySQL数据库中的数据实时同步到Elasticsearch,确保数据的一致性和实时性。 简化的数据迁移和索引创建:在Elasticsearch中,可以创建与MySQL数据库表结构相对应的索引,简化了数据迁移和索引管理的复杂性。 灵活的查询语言:Elasticsearch提供了灵活的查询语言,支持复杂查询的构建,如范围查询、模糊查询、聚合查询等,这在关系型数据库中可能需要更复杂的SQL语句来实现。 统计分析能力:Elasticsearch的聚合功能可以快速进行数据统计和分析,如年龄分布统计等,这在关系型数据库中可能需要更多的计算资源和时间。 安全性和稳定性:通过配置安全模式的Elasticsearch集群和MySQL数据库,以及使用SSL安全连接,可以保证数据传输的安全性和系统的稳定性。 易于监控和维护:Elasticsearch提供了丰富的监控工具和API,使得系统维护和性能监控变得更加容易。 扩展性:Elasticsearch集群可以根据业务需求进行水平扩展,增加更多的节点来处理更大的数据量和查询负载。 这些优势使得Elasticsearch集群成为关系型数据库在处理全文检索和高并发Ad Hoc查询时的有效补充。
  • 应用场景 使用Elasticsearch加速关系型数据库,可以解决关系型数据库在某些方面的局限性,实现更加高效和智能的数据处理和分析。常用于以下应用场景: 电子商务平台:快速搜索商品,提供个性化推荐,实时监控用户行为和交易数据。 内容管理系统:对大量文档和内容进行高效检索,支持复杂的查询和数据分析。 金融服务:实时监控交易数据,进行风险分析和欺诈检测。 社交媒体分析:对用户生成的内容进行情感分析,趋势和影响力评估。 客户关系管理:快速检索客户信息,分析客户行为,提供定制化服务。 日志和事件监控:收集和分析大量日志数据,实时监控系统状态和安全事件。 医疗健康记录:快速检索和分析患者记录,支持临床决策和研究。
  • 应用场景 Elasticsearch是一个高度可扩展的开源搜索和分析引擎,支持用户通过自定义规则对搜索结果进行排序。自定义排序允许开发者根据业务需求,定义特定的排序规则,以优化搜索结果的相关性和用户体验。该方案可以用于以下场景: 电子商务:根据销量、用户评价、价格等因素对商品进行排序。 内容管理:根据阅读量、发布时间对文章或博客帖子进行排序。 金融服务:根据交易金额、频率或风险评分对交易记录进行排序。 客户支持:根据工单的紧急程度或打开时间对客户请求进行排序。
  • 方案架构 通过自定义规则对搜索结果进行排序是通过Elasticsearch的排序API实现的。通过调用排序API查询数据,实现数据按自定义规则排序。 自定义规则查询有两种方式。 用绝对好评率计算总分,按照总分由高到低的顺序排列出查询结果。 总分 = 匹配得分 * (好评率 * 绝对因子) 匹配得分:根据查询结果计分,内容匹配记1分,否则记0分,得分之和即为匹配得分。 好评率:从匹配项的数据内容中获取好评率的值,一般指单条数据的评分。 绝对因子:自定义的好评比例。 用相对好评率计算总分,按照总分由高到低的顺序排列查询结果。 总分 = 匹配得分 * (好评率 * 相对分数) 匹配得分:根据查询结果计分,内容匹配记1分,否则记0分,得分之和即为匹配得分。 好评率:从匹配项的数据内容中获取好评率的值,一般指单条数据的评分。 相对分数:自定义一个好评率阈值,当好评率大于阈值时,返回一个自定义的相对分数;当好评率小于等于阈值时,返回另一个自定义的相对分数。通过这种方式可以避免异常好评率对查询结果的影响。
  • 应用场景 本文以Elasticsearch、Filebeat、Logstash和Kibana为例,搭建一个统一日志管理平台。使用Filebeat采集ECS中的日志,发送到Logstash进行数据处理,再存储到Elasticsearch中,最后通过Kibana进行日志的可视化查询与分析。该方案可以用于以下场景: 日志管理:集中管理应用程序和系统日志,快速定位问题。 安全监控:检测和响应安全威胁,进行入侵检测和异常行为分析。 业务分析:分析用户行为,优化产品和服务。 性能监控:监控系统和应用程序性能,实时发现瓶颈。
  • 方案架构 ELKB(Elasticsearch、Logstash、Kibana、Beats)提供了一整套日志场景解决方案,是目前主流的一种日志系统。 Elasticsearch是一个开源分布式的搜索和分析引擎,用于存储、搜索和分析大量数据。 Logstash是一个服务器端的数据管道,负责收集、解析和丰富数据后,将其发送到Elasticsearch。 Kibana为Elasticsearch提供一个开源的数据分析和可视化平台,用于对Elasticsearch中的数据进行搜索、查看和交互。 Beats:轻量级的数据收集器(如Filebeat、Metricbeat等),安装在服务器上,负责收集和转发数据到Logstash。 使用Elasticsearch和Logstash构建日志管理平台的方案架构如图1所示。 图1 ELKB架构 数据收集 Beats作为数据收集器,负责从各种源收集数据并发送到Logstash。 Logstash可以独立收集数据,或从Beats接收数据,对数据进行过滤、转换和增强。 数据处理 Logstash在将数据发送到Elasticsearch之前,对数据进行必要的处理,如解析结构化日志、过滤无用信息等。 数据存储 Elasticsearch作为核心存储组件,Elasticsearch索引和存储来自Logstash的数据,提供快速搜索和数据检索功能。 数据分析与可视化 使用Kibana对Elasticsearch中的数据进行分析和可视化,创建仪表板和报告,以直观展示数据。 ELKB系统中各组件的版本兼容性请参见https://www.elastic.co/support/matrix#matrix_compatibility。
  • 背景信息 云搜索服务 用opendistro_security安全插件对外提供安全集群能力,opendistro_security安全插件是基于RBAC(Role-Based Access Control)模型构建。RBAC包括三个重要核心概念:用户(User)、权限(Action)、角色(Role)。RBAC简化了用户和权限的关系,降低了权限管理的难度,方便权限扩展易于维护。三者之前的关系如下图所示。 图1 用户、权限和角色 表1 OpenSearch Dashboard创建用户和授权 参数 描述 Permission 权限:单个动作,例如创建索引(例如indices:admin/create)。 Action group 操作组:表示一组权限。例如,预定义的SEARCH操作组授权角色使用_search和_msearchAPI。 Role 角色:定义为权限或操作组的组合,包括对集群,索引,文档或字段的操作权限。 User 用户:可以向Elasticsearch集群发出操作请求。用户具有凭证(例如,用户名和密码)、零个或多个后端角色以及零个或多个自定义属性。 Role mapping 角色映射:用户在成功进行身份验证后会担任角色,角色映射,就是将角色映射到用户(或后端角色)。例如,kibana_user(角色)到jdoe(用户)的映射意味着John Doe在获得kibana_user身份验证后获得了所有权限。同样,all_access(角色)到admin(后端角色)的映射意味着具有后端角色admin(来自LDAP / Active Directory服务器)的任何用户都获得了all_access身份验证后的所有权限。您可以将每个角色映射到许多用户和/或后端角色。 在OpenSearch Dashboard界面的Security菜单中,您可以控制用户在OpenSearch集群中的权限,实现集群、索引、文档和字段四个级别的细粒度访问权限控制。 支持添加或删除集群的用户,并能够将用户映射到角色,实现用户关联角色权限。 角色映射功能允许配置角色的成员,通过用户名、后端角色和主机名将用户分配给相应的角色。支持为每种角色配置集群访问权限、索引和文档的访问权限,以及OpenSearch Dashboard的使用权限。 有关安全集群的更多安全配置信息以及详细的操作指导,可以参考Elasticsearch的安全模式官方介绍。
  • 场景描述 表1 变更规格场景 场景 描述 约束限制 升级节点规格 基于某一节点类型变更集群的“节点规格”。变更规格过程中,会依次对节点进行关机,完成更改后再依次开机,是一个滚动的变更过程。 一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点的“节点规格”,提高数据查询的效率。 变更节点规格也支持将大规格更改为小规格,但是此变更会降低集群的处理性能,进而影响业务能力,请谨慎使用。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 变更磁盘类型 基于某一节点类型变更集群的节点存储类型。通过重建节点的方式删除原类型的磁盘,再挂载新类型的磁盘,实现更改节点的磁盘类型。 只有数据节点和冷数据节点支持变更磁盘类型,且数据节点和冷数据节点之和必须大于等于3。 本地盘不支持修改磁盘类型。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 在集群数据量比较大的情况下,变更节点规格耗时比较长,建议在业务低峰期更改节点规格,利于更快完成规格更改。
  • 约束限制 CSS 开启公网访问后,会使用到EIP和带宽资源,涉及相关资源费用。 仅Elasticsearch集群版本≥6.5.4和OpenSearch集群才支持开启“安全模式”。 公网访问和终端节点服务使用的是同一个负载均衡。当集群开启了公网访问白名单,由于白名单是作用在负载均衡上面,将会同时限制公网访问集群和内网通过VPCEP访问集群的IP地址。此时需要在公网访问白名单中添加一个网络白名单“198.19.128.0/17”,通过该白名单用来放通经过VPCEP的流量。
  • 创建集群时配置公网访问 登录 云搜索 服务管理控制台。 在创建集群页面,开启“安全模式”。设置管理员密码,并启用HTTPS访问。 “公网访问”选择“自动绑定”,配置公网访问相关参数。 图1 创建集群时配置公网访问 表1 公网访问参数说明 参数 说明 带宽 设置公网访问的带宽。 访问控制开关 如果关闭访问控制开关,则允许任何IP通过公网IP访问集群。如果开启访问控制开关,则只允许白名单列表中的IP通过公网IP访问集群。 白名单 设置允许访问的IP地址或网段,中间用英文逗号隔开。仅当打开“访问控制开关”时才需要配置。
  • 通过公网IP地址接入集群 公网访问配置完成后,集群将会获得一个“公网访问”的IP地址,用户可以通过公网IP地址和端口接入集群。 例如,启用HTTPS的安全集群的公网访问地址为“10.62.179.32”,端口为“9200”,则执行Curl命令查看集群中的索引信息。 curl -u username:password -k 'https://10.62.179.32:9200/_cat/indices' 其中username和password表示安全集群的用户名和密码。
  • 已有集群配置公网访问 您可以对已经创建集群的公网访问进行修改,查看,解绑,也可以配置公网访问。 登录云搜索服务管理控制台。 在集群管理页面,单击需要配置公网访问的集群名称,进入集群基本信息页面,管理公网访问相关配置。 图2 修改公网访问相关配置 配置公网访问 如果创建安全集群时,开启了HTTPS访问但未配置公网访问,集群创建成功后,可以在集群基本信息页面配置公网访问。 单击“公网访问”参数右侧的“绑定”,设置访问带宽后,单击“确定”。 如果绑定失败,用户可以等待几分钟后,再次尝试重新绑定公网访问。 修改 对已经配置了公网访问的集群,可以通过单击“带宽”参数右侧的“修改”,修改带宽大小,也可以通过单击“访问控制”右侧的“设置”,设置访问控制开关和访问白名单。 查看 在“基本信息”页面,可以查看当前集群绑定的公网IP地址。 解绑 对于已经绑定的公网IP地址,可以通过单击“公网访问”参数右侧的“解绑”,解绑公网IP地址。
  • 集群列表介绍 集群列表会展示当前账号下同一集群类型的所有集群。当集群数量较多时,会翻页显示,支持查看任何状态下的集群。 集群列表默认按时间顺序排列,时间最近的集群显示在最前端。 在集群列表页单击“导出”可以下载全量的集群列表信息。 表1 集群列表说明 参数 描述 名称/ID 展示集群的名称和ID。单击集群名称可进入集群“基本信息”页面,展现了集群的基本信息。集群ID是系统自动生成的,是集群在服务中的唯一标示。 集群状态 展示集群的运行状态。 可用:正常运行的集群。 创建中:正在创建中的集群。 处理中:重启中、扩容中、变更规格、缩容中的集群。 异常:创建失败或不可用的集群。 说明: 当集群处于“不可用”状态时,支持删除集群,但是无法扩容集群。您可以查看监控或重启集群处理异常,当依旧执行失败时,请及时联系技术支持。 任务状态 展示重启集群、扩容集群、缩容集群、工作中(管道列表存在运行中的管道)等任务的状态。 版本 展示集群版本号和镜像版本号。 说明: 当集群的创建时间比较早时,数据库可能未记录其镜像信息,导致页面无法显示集群的镜像版本号。 创建时间 展示集群的创建时间。 企业项目 展示集群所归属的企业项目。 内网访问地址 展示集群的内网访问地址和端口号,您可以使用此参数接入集群。集群有多个节点时,此处显示多个节点的内网访问地址和端口号。 计费模式 展示集群的计费模式,是“按需计费”还是“包年/包月”。 操作 展示集群可执行的操作入口,包含监控信息、重启、删除等其他更多操作。当某一操作无法执行时,按钮将置灰。
  • 导入向量数据 执行如下命令,导入向量数据。向“my_index”索引中写入向量数据时,需要指定向量字段名称和向量数据。 向量数据输入格式为逗号分隔的浮点型数组时: POST my_index/_doc { "my_vector": [1.0, 2.0] } 向量数据输入格式为小端字节序编码的Base64字符串时: 在写入二值向量,或向量维度较高、数值有效位较多时,使用Base64编码格式传输、解析更加高效。 POST my_index/_doc { "my_vector": "AACAPwAAAEA=" } 当写入大规模数据时,建议使用Bulk操作: POST my_index/_bulk {"index": {}} {"my_vector": [1.0, 2.0], "my_label": "red"} {"index": {}} {"my_vector": [2.0, 2.0], "my_label": "green"} {"index": {}} {"my_vector": [2.0, 3.0], "my_label": "red"}
  • 创建向量索引 登录云搜索服务管理控制台。 在“集群管理”页面,选择需要启用向量检索的集群,单击操作列“Kibana”,登录Kibana界面。 单击左侧导航栏的“Dev Tools”,执行如下命令创建向量索引。 创建一个名为“my_index”的索引,该索引包含一个名为“my_vector”的向量字段和一个名为“my_label”的文本字段。其中,向量字段创建了GRAPH图索引,并使用欧式距离作为相似度度量。 PUT my_index { "settings": { "index": { "vector": true } }, "mappings": { "properties": { "my_vector": { "type": "vector", "dimension": 2, "indexing": true, "algorithm": "GRAPH", "metric": "euclidean" }, "my_label": { "type": "keyword" } } } } 表3 创建索引参数说明 类型 参数 说明 Index settings参数 vector 当需要使用向量索引加速时,需要设置该值为true。 Field mappings参数 type 字段类型,“vector”表示该字段为向量字段。 dimension 向量数据维度。取值范围:[1, 4096]。 indexing 是否开启向量索引加速。 可选值: false:表示关闭向量索引加速,向量数据仅写入docvalues,只支持使用ScriptScore以及Rescore进行向量查询。 true:表示开启向量索引加速,系统将创建额外的向量索引,索引算法由"algorithm"字段指定,写入数据后可以使用VectorQuery进行查询。 默认值:false。 algorithm 索引算法。仅当“indexing”为“true”时生效。 可选值: FLAT:暴力计算,目标向量依次和所有向量进行距离计算,此方法计算量大,召回率100%。适用于对召回准确率要求极高的场景。 GRAPH:图索引,内嵌深度优化的HNSW算法,主要应用在对性能和精度均有较高要求且单shard中文档数量在千万个以内的场景。 GRAPH_PQ:将HNSW算法与PQ算法进行了结合,通过PQ降低原始向量的存储开销,能够使HNSW轻松支撑上亿规模的检索场景。 IVF_GRAPH:算法将IVF与HNSW结合,对全量空间进行划分,每一个聚类中心向量代表了一个子空间,极大地提升检索效率,同时会带来微小的检索精度损失。适用于数据量在上亿以上同时对检索性能要求较高的场景。 IVF_GRAPH_PQ:PQ算法与IVF-HNSW的结合,PQ可以通过配置选择与HNSW结合和IVF结合,进一步提升系统的容量并降低系统开销,适用于shard中文档数量在十亿级别以上同时对检索性能要求较高的场景。 默认值:GRAPH。 说明: 当选择IVF_GRAPH或者IVF_GRAPH_PQ索引时,需要额外进行预构建中心点索引以及注册等步骤,具体内容请参考(可选)预构建与注册中心点向量。 其他可选参数 当使用向量索引加速时(即“indexing”为“true”时),为了获得更高的查询性能以及查询精度,CSS提供了与向量索引相关的可选参数配置,参数说明请参见表4。 metric 计算向量之间距离的度量方式。 可选值: euclidean:欧式距离。 inner_product:内积距离。 cosine:余弦距离。 hamming:汉明距离,仅支持设置"dim_type"为"binary"时使用。 默认值:euclidean。 dim_type 向量维度值的类型。 可选值:binary、float(默认)。 表4 可选参数说明 类型 参数 说明 GRAPH类索引配置参数 neighbors 图索引中每个向量的邻居数,默认值为64,值越大查询精度越高。索引越大,构建速度以及后续的查询速度也会变慢。 取值范围:[10, 255]。 shrink 构建hnsw时的裁边系数,默认值1.0f。 取值范围:(0.1, 10)。 scaling 构建hnsw时上层图节点数的缩放比例,默认值50。 取值范围:(0, 128]。 efc 构建hnsw时考察邻居节点的队列大小,默认值为200,值越大精度越高,构建速度将会变慢。 取值范围:(0, 100000]。 max_scan_num 扫描节点上限,默认值为10000,值越大精度越高,索引速度变慢。 取值范围:(0, 1000000]。 PQ类索引配置参数 centroid_num 每一段的聚类中心点数目,默认值为255。 取值范围:(0, 65535]。 fragment_num 段数,默认值为0,插件自动根据向量长度设置合适的段数。 取值范围:[0, 4096]。
  • (可选)预构建与注册中心点向量 当创建向量索引时选择使用“IVF_GRAPH”和“IVF_GRAPH_PQ”的索引算法,则需要对中心点向量进行预构建和注册。 在向量索引加速算法中,“IVF_GRAPH”和“IVF_GRAPH_PQ”适用于超大规模场景。这两种算法需要通过对子空间的切割缩小查询范围,子空间的划分通常采用聚类或者随机采样的方式。在预构建之前,需要通过聚类或者随机采样得到所有的中心点向量。通过预构建和注册将中心点向量预构建成GRAPH或者GRAPH_PQ索引,同时注册到CSS集群内,实现在多个节点间共享此索引文件。中心点索引在shard间复用能够有效减少训练的开销、中心点索引的查询次数,提升写入以及查询的性能。 选择启用向量检索的集群,单击操作列“Kibana”,登录Kibana界面。 单击左侧导航栏的“Dev Tools”,进入操作界面。 创建中心点索引表。 创建的索引命名为my_dict,注意该索引的number_of_shards数必须设置为1,否则无法注册。 当需要使用IVF_GRAPH索引时,中心点索引的algorithm设置为GRAPH。 当需要使用IVF_GRAPH_PQ索引时,中心点索引的algorithm设置为GRAPH_PQ。 PUT my_dict { "settings": { "index": { "vector": true }, "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "properties": { "my_vector": { "type": "vector", "dimension": 2, "indexing": true, "algorithm": "GRAPH", "metric": "euclidean" } } } } 写入中心点向量数据。 参考导入向量数据将采样或者聚类得到的中心点向量写入上述创建的my_dict索引中。 调用注册接口。 将上述创建的my_dict索引注册具有全局唯一标识名称(dict_name)的Dict对象。 PUT _vector/register/my_dict { "dict_name": "my_dict" } 创建IVF_GRAPH或IVF_GRAPH_PQ索引。 在创建IVF_GRAPH或者IVF_GRAPH_PQ索引时,不再需要指定dimension以及metric信息,只需指定之前注册好的dict名称即可。 PUT my_index { "settings": { "index": { "vector": true, "sort.field": "my_vector.centroid" # 将向量字段的centroid子字段设置为排序字段 } }, "mappings": { "properties": { "my_vector": { "type": "vector", "indexing": true, "algorithm": "IVF_GRAPH", "dict_name": "my_dict", "offload_ivf": true } } } } 表2 Field mappings参数 参数 说明 dict_name 指定依赖的中心点索引名称。该索引字段的向量维度和度量方式将与dict索引保持一致,不再需要额外指定。 offload_ivf 将底层索引实现的IVF倒排索引卸载到ES端实现,可以减少堆外内存的使用,以及减少写入/合并的性能开销。建议设置为true。 取值范围:true、false。 默认值:false。
  • (可选)准备工作 在创建向量索引前,请根据业务场景,完成集群高级配置。 在离线导入数据场景下,为了提高批量写入性能,建议将索引的“refresh_interval”参数设置为“-1”,即关闭自动刷新索引。 建议将备份数“number_of_replicas”设置为“0”,当离线数据导入完成后,再设置为需要的值。 其他高级功能的参数配置说明请参见表1。 表1 集群高级配置参数说明 参数 说明 native.cache.circuit_breaker.enabled 是否开启堆外内存熔断。 默认值:true。 native.cache.circuit_breaker.cpu.limit 向量索引堆外内存使用上限。 假设使用128GB内存的机器且堆内存大小为31GB,默认堆外内存使用上限为(128 - 31) * 45% = 43.65GB,堆外内存使用量超过该值将会触发写入熔断。 默认值:45%。 native.cache.expire.enabled 是否开启缓存超时设置。开启时,如果某些缓存项长时间没有被访问过将会被清除。 取值范围:true、false。 默认值:false。 native.cache.expire.time 超时时长。 默认值:24h。 native.vector.index_threads 创建底层索引时所使用的线程数,每个shard均会使用多个构建线程。该值建议不要设置过大,避免产生过多的构建线程抢占查询资源。 默认值:4。
  • 方案概述 对于时间序列数据,随着时间推移数据持续写入,索引会越来越大,通过生命周期管理来定期将数据滚动到新索引,并将历史老索引删除,实现自动滚动索引。 本案例通过配置生命周期策略,当索引的大小达到1TB或索引创建超过1天时,自动滚动生成新索引;当索引创建7天后,关闭数据副本;当索引创建30天后,删除该索引。 假设某个索引,其每天约产生2.4TB的数据,索引别名“log-alias”,其数据在Elasticsearch中的组织形态如下图所示。查询时,指向所有test开头的索引;写入时,指向最新的索引。 图1 log-alias的组织形态 索引的滚动条件1天是以索引的创建时间来计算的,并不是完整自然日区分的。
  • 集群列表介绍 集群列表会展示当前账号下同一集群类型的所有集群。当集群数量较多时,会翻页显示,支持查看任何状态下的集群。 集群列表默认按时间顺序排列,时间最近的集群显示在最前端。 在集群列表页单击“导出”可以下载全量的集群列表信息。 表1 集群列表说明 参数 描述 名称/ID 展示集群的名称和ID。单击集群名称可进入集群“基本信息”页面,展现了集群的基本信息。集群ID是系统自动生成的,是集群在服务中的唯一标示。 集群状态 展示集群的运行状态。 可用:正常运行的集群。 创建中:正在创建中的集群。 处理中:重启中、扩容中、备份中或恢复中的集群。 异常:创建失败或不可用的集群。 说明: 当集群处于“不可用”状态时,支持删除集群,也支持将集群正常状态时创建的快照恢复至其他集群。但是无法扩容集群、访问Kibana、创建快照或将快照恢复至此集群。建议不要执行导入数据的操作,避免数据丢失。您可以查看监控或重启集群处理异常,当依旧执行失败时,请及时联系技术支持。 任务状态 展示重启集群、扩容集群、缩容集群等任务的状态。 版本 展示集群版本号和镜像版本号。 说明: 当集群的创建时间比较早时,数据库可能未记录其镜像信息,导致页面无法显示集群的镜像版本号。 当版本号下方显示“EOS”时,表示当前版本已经停止服务,集群存在较高风险,建议及时升级集群版本。 创建时间 展示集群的创建时间。 企业项目 展示集群所归属的企业项目。 内网访问地址 展示集群的内网访问地址和端口号,您可以使用此参数接入集群。集群有多个节点时,此处显示多个节点的内网访问地址和端口号。 计费模式 展示集群的计费模式,是“按需计费”还是“包年/包月”。 操作 展示集群可执行的操作入口,包含监控信息、重启、删除等其他更多操作。当某一操作无法执行时,按钮将置灰。
  • 集群列表介绍 集群列表会展示当前账号下同一集群类型的所有集群。当集群数量较多时,会翻页显示,支持查看任何状态下的集群。 集群列表默认按时间顺序排列,时间最近的集群显示在最前端。 在集群列表页单击“导出”可以下载全量的集群列表信息。 表1 集群列表说明 参数 描述 名称/ID 展示集群的名称和ID。单击集群名称可进入集群“基本信息”页面,展现了集群的基本信息。集群ID是系统自动生成的,是集群在服务中的唯一标示。 集群状态 展示集群的运行状态。 可用:正常运行的集群。 创建中:正在创建中的集群。 处理中:重启中、扩容中、备份中或恢复中的集群。 异常:创建失败或不可用的集群。 说明: 当集群处于“不可用”状态时,支持删除集群,也支持将集群正常状态时创建的快照恢复至其他集群。但是无法扩容集群、访问Kibana、创建快照或将快照恢复至此集群。建议不要执行导入数据的操作,避免数据丢失。您可以查看监控或重启集群处理异常,当依旧执行失败时,请及时联系技术支持。 任务状态 展示重启集群、扩容集群、缩容集群等任务的状态。 版本 展示集群版本号和镜像版本号。 说明: 当集群的创建时间比较早时,数据库可能未记录其镜像信息,导致页面无法显示集群的镜像版本号。 当版本号下方显示“EOS”时,表示当前版本已经停止服务,集群存在较高风险,建议及时升级集群版本。 创建时间 展示集群的创建时间。 企业项目 展示集群所归属的企业项目。 内网访问地址 展示集群的内网访问地址和端口号,您可以使用此参数接入集群。集群有多个节点时,此处显示多个节点的内网访问地址和端口号。 计费模式 展示集群的计费模式,是“按需计费”还是“包年/包月”。 操作 展示集群可执行的操作入口,包含监控信息、重启、删除等其他更多操作。当某一操作无法执行时,按钮将置灰。
  • 通过内网地址访问Kibana登录Elasticsearch集群 同一VPC下的服务器才能通过Elasticsearch集群的内网访问地址访问Kibana。 登录云搜索服务管理控制台。 在集群管理页面,单击集群名称,进入集群基本信息页面。 在集群基本信息页面,获取集群的内网访问地址。 图2 获取内网地址 将集群的内网访问地址的端口号从“9200”改为“5601”,即为Kibana的内网地址。例如,集群的“内网访问IPv4地址”是“192.168.0.***:9200”,则Kibana的内网地址为“192.168.0.***:5601”。 在服务器中,输入Kibana的内网地址即可进入Kibana登录界面。 非安全模式的集群:将直接进入Kibana操作界面。 安全模式的集群:需要在登录页面输入用户名和密码,单击“Log In”进入Kibana操作界面。用户名默认为admin,密码为创建集群时设置的管理员密码。 登录成功后,可在Kibana界面进行相关操作访问Elasticsearch集群。
  • 通过公网地址访问Kibana登录Elasticsearch集群 仅安全模式的集群支持通过Kibana公网访问地址访问Kibana。 登录云搜索服务管理控制台。 开启Elasticsearch集群的Kibana公网访问。支持在创建集群的时候就配置Kibana公网访问,或者在集群创建完之后再开启Kibana公网访问。 在创建集群时配置Kibana公网访问:操作指导请参见创建Elasticsearch集群。 集群创建完之后再开启Kibana公网访问: 在集群管理页面,单击需要配置Kibana公网访问的集群名称,进入集群基本信息页面。 左侧菜单栏选择“Kibana公网访问”,在“Kibana公网访问”右侧单击开关,打开Kibana公网访问功能。 在开启Kibana公网访问页面,配置相关参数。如果集群已配置Kibana公网访问,此时也支持修改相关配置。 表2 配置Kibana公网访问 参数 说明 带宽 设置公网访问的带宽。 取值范围:1-100。 单位:Mbit/s。 访问控制开关 如果关闭访问控制开关,则允许任何IP通过公网IP访问集群Kibana。如果开启访问控制开关,则只允许白名单列表中的IP通过公网IP访问集群Kibana。 白名单 设置允许访问的IP地址或网段,中间用英文逗号隔开。仅当打开“访问控制开关”时才需要配置。 建议开启白名单。 说明: Kibana公网访问配置的白名单依赖ELB的白名单能力。更新白名单后,白名单对新建的连接是实时生效的,但对于已存在的长连接,可能会出现去掉的白名单IP地址还能访问Kibana的场景,这是因为要等长连接断开后才生效,预计1分钟左右。 配置完成后,单击“确定”。 待集群的Kibana公网访问开通以后,在Kibana公网访问页面获取“kibana公网访问地址”。 图1 获取Kibana公网访问地址 在浏览器中,输入“kibana公网访问地址”即可进入Kibana登录界面。 在登录页面输入用户名和密码,单击“Log In”进入Kibana操作界面。用户名默认为admin,密码为创建集群时设置的管理员密码。 登录成功后,可在Kibana界面进行相关操作访问Elasticsearch集群。
共100000条