华为云用户手册

  • 升级前检查 为了保证升级成功,需要做升级前检查,升级前检查主要包括如下事项: 表2 升级前检查项 检查项 检查方式 描述 正常状态 集群状态 系统检查 升级任务启动后,系统会自动检查集群状态。集群状态为green或者yellow,表示集群可以正常提供服务,不存在未分配的主分片。 “集群状态”为“可用”。 节点个数 系统检查 升级任务启动后,系统会自动检查节点个数。为了保证业务的连续性,集群中数据节点和冷数据节点的个数之和要不小于3。 集群的数据节点和冷数据节点个数之和 ≥ 3 磁盘容量 系统检查 升级任务启动后,系统会自动检查磁盘容量。升级过程中会逐一下线节点再新建节点,需要保证单节点下线后,其余节点的磁盘容量能够接纳该节点的所有数据。 下线单节点后,剩余节点能够包含集群的所有数据。 数据副本 系统检查 检测集群中索引的最大主备分片数是否能够分配到剩余数据节点和冷数据节点中,防止升级过程中出现节点下线后副本无法分配的情况。 索引的主备分片数的最大值+1 ≤ 升级前的数据节点数和冷数据节点之和 数据备份 系统检查 升级前要做好数据备份,防止升级故障数据丢失。在提交升级任务时,可以选择是否需要系统检查全量索引的快照备份。 确认是否存在数据备份。 资源充足 系统检查 升级任务启动后,系统会自动检查资源。升级过程中会新建资源,需要保证有资源可用。 资源可用且配额充足。 自定义插件 系统检查+人工检查 历史版本的集群装有自定义插件才需要进行该项检查。如果集群装有自定义插件,则需要在插件管理界面上传目标版本的所有插件包,升级过程中才能将自定义插件转入新节点中,否则集群升级成功后,自定义插件将丢失。升级任务启动后,系统会自动检查是否已经上传自定义插件包,但是上传的插件包是否正确需要人工检查。 说明: 如果上传的插件包不正确或者不兼容将导致升级过程中无法自动安装插件包,升级任务会失败。如果需要恢复集群,可以终止升级任务,执行指定节点替换操作,修复当前升级失败的节点。 升级完成后,自定义插件对应的“插件状态”将会重置为“已上传”状态。 装有自定义插件的集群已经把对应版本的插件包上传到升级插件列表中。 自定义配置 系统检查 升级过程中,系统会自动同步集群配置文件“elasticsearch.yml”中的内容。 如果集群有自定义的参数配置,升级完成后,配置都未丢失。 非标操作 人工检查 确认是否存在非标操作。非标操作指的是没有被记录下来的手动操作,这些操作在升级过程中无法自动传递,比如“Kibana.yml”配置文件修改、系统配置、回程路由等。 有些非标操作是兼容的,例如安全插件的修改,可以通过元数据保留下来;系统配置修改,可以通过镜像的操作保留下来。但是有些非标操作例如“kibana.yml”文件修改就无法保留,需要提前备份。 兼容性检测 系统检查+人工检查 跨版本升级的升级任务启动后,系统会自动检测集群升级前后两个版本是否有不兼容配置。如果集群装有自定义插件,则自定义插件的版本兼容性需要人工检测。 跨版本升级时,升级前后没有不兼容的配置。
  • 场景描述 升级原理 升级过程采用的是one-by-one的方式,不会中断业务。升级时,先下线一个节点,将该节点的数据迁移到其余节点,再创建一个目标版本的新节点,将已下线节点的网卡port挂载到新节点,以此保留节点IP地址,待新节点加入到集群后,再依次将其余节点进行替换。当集群的数据量很大时,升级耗时将依赖数据迁移耗时。 升级流程 升级前检查 手动创建快照 创建升级任务 版本限制 待升级的集群版本不同,支持升级的目标版本也不同,具体请参见表1。 表1 版本升级的版本限制 当前版本 目标版本 Elasticsearch:6.2.3 Elasticsearch:6.5.4,6.8.23 Elasticsearch:6.5.4 Elasticsearch:6.8.23 Elasticsearch:6.8.23 Elasticsearch:7.6.2,7.10.2 Elasticsearch:7.1.1 Elasticsearch:7.6.2,7.10.2 Elasticsearch:7.6.2 Elasticsearch:7.10.2 Elasticsearch:7.9.3 Elasticsearch:7.10.2 Elasticsearch:7.10.2 OpenSearch:1.3.6 说明: ELasticsearch集群以7.6.2 和7.10.2为主力版本,建议其他版本的集群收编到该版本。实际支持的目标版本请以升级页面中“目标镜像”的可选值为准。 5.x版本的ELasticsearch集群不支持跨版本升级,6.2.3和6.5.4版本Elasticsearch集群可先升级到6.8.23版本,再升级到7.x.x版本。 当前仅支持7.10.2版本Elasticsearch集群跨引擎升级至1.3.6版本OpenSearch集群。
  • 操作步骤 登录云搜索服务管理控制台。 在“集群管理”页面选择目标集群,单击操作列“Kibana”,登录Kibana界面。 单击左侧导航栏的“Dev Tools”,执行命令开启或关闭内存流控。 开启内存流控 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": true, "flowcontrol.memory.allow_path": "/index/_search", "flowcontrol.memory.heap_limit": "85%" } } 开启单个请求Path的内存流控 基于单个索引和请求Path设置堆内存使用阈值,可以基于此规则做优先级调度。 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": true, "flowcontrol.memory": { "flowcontrol_search": { "filter_path": "index1/_search", "heap_limit": "50%" }, "flowcontrol_bulk": { "filter_path": "index*/_bulk", "heap_limit": "50%" } } } } 删除单个请求Path的内存流控配置 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": true, "flowcontrol.memory": { "flowcontrol_search": { "filter_path": null, "heap_limit": null } } } } 关闭集群内存流控 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": false } }
  • 变更策略 您可以更改任何托管索引策略,但是ISM有一些约束条件可以确保策略更改不会破坏索引。 如果索引卡在其当前状态,永不进行,并且您想立即更新其策略,请确保新策略包括与旧策略相同的状态(名称,操作,顺序相同)。在这种情况下,即使策略处于执行操作中,ISM也会应用新策略。 如果在不包含相同状态的情况下更新策略,则ISM仅在当前状态下的所有操作执行完成后才更新策略。或者,您可以在旧策略中选择特定状态,然后让新策略生效。 在Kibana中更改更改政策,操作步骤如下: 在Managed indices下,选择需要更换新策略的索引。 单击右上角的Change policy,进入Choose managed indices页面,选择更换新策略的相关信息 。 表1 更换索引策略参数信息 参数 说明 Managed indices 选择需要更换策略的索引名称。支持选择多个索引。 State filters 选择索引状态。选择后,会将新策略附加到处于特定状态的索引。 New policy 选择新策略。 选择完成后,单击Change。 父主题: 管理索引
  • 背景信息 重启集群支持快速重启和滚动重启。 快速重启 所有集群都支持。 当选择“节点类型”快速重启时,所选类型的所有节点会一起重启。 当选择“节点名称”快速重启时,一次只能重启一个节点。 快速重启过程中,集群不可用。 滚动重启 仅当集群的节点数量(含Master节点、Client节点和冷数据节点)大于等于3时,才支持滚动重启。 滚动重启只支持根据“节点类型”进行重启。选择节点类型滚动重启时,所选类型的节点会依次重启。 滚动重启过程中,只有正在重启的节点不可用,不在重启过程中的节点可以正常提供服务。 当数据量比较大时,滚动重启耗时较长。
  • 注意事项 开启Bulk本地shard优先路由优化和开启Bulk路由优化后,数据写入不再根据_id进行路由,与路由的相关功能使用会受限,比如根据_id进行文档GET请求可能失败。Bulk本地shard优先路由优化依赖客户端Bulk请求的随机打散和主shard的均衡分布。 开启“index.native_speed_up”文本索引加速功能后不再支持index_sorting。 开启“index.native_analyzer”配置的前提条件: 已开启“index.native_speed_up”配置。
  • 步骤二:使用关键词搜索 创建索引“book”,配置分词策略。 示例中“analyzer”和“search_analyzer”可以根据实际需要“ik_max_word”或“ik_smart”分词策略,此处以“ik_max_word”为例。 PUT /book { "settings": { "number_of_shards": 2, "number_of_replicas": 1 }, "mappings": { "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } } } 导入数据,将文本信息导入“book”索引中。 PUT /book/_doc/1 { "content":"智能手机是很好用" } 使用关键词“智能手机”进行文本搜索,并查看搜索结果。 GET /book/_doc/_search { "query": { "match": { "content": "智能手机" } } } 搜索结果: { "took" : 16, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.7260926, "hits" : [ { "_index" : "book", "_type" : "_doc", "_id" : "1", "_score" : 1.7260926, "_source" : { "content" : "智能手机是很好用" } } ] } }
  • 步骤三:使用同义词搜索 创建索引“myindex”,配置分词策略。 PUT myindex { "settings": { "analysis": { "filter": { "my_synonym": { "type": "dynamic_synonym" } }, "analyzer": { "ik_synonym": { "filter": [ "my_synonym" ], "type": "custom", "tokenizer": "ik_smart" } } } }, "mappings": { "properties": { "desc": { "type": "text", "analyzer": "ik_synonym" } } } } 导入数据,将文本信息导入“myindex”索引中。 PUT /myindex/_doc/1 { "desc": "我今天获奖了我很开心" } 使用同义词“高兴”进行文本搜索,并查看搜索结果。 GET /myindex/_search { "query": { "match": { "desc": "高兴" } } } 搜索结果: { "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.1519955, "hits" : [ { "_index" : "myindex", "_type" : "_doc", "_id" : "1", "_score" : 0.1519955, "_source" : { "desc" : "我今天获奖了我很开心" } } ] } }
  • 低基字段分组聚合 对低基字段,在排序的情况下,具备较好的数据聚簇性,利于向量化优化处理。假如有如下查询语句: POST testindex/_search { "size": 0, "aggs": { "groupby_region": { "terms": { "field": "region" }, "aggs": { "groupby_host": { "terms": { "field": "host" }, "aggs": { "avg_cpu_usage": { "avg": { "field": "cpu_usage" } } } } } } } } 假设region和host为低基字段,如果要使用聚合增强特性,那么设置如下: 聚簇键必须是排序键的前缀子集。 // 索引设置 "settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "region", "host", "other" ] }, "cluster" : { "field" : [ // 指定聚簇键 "region", "host" ] } } } 父主题: 聚合增强
  • 高基字段直方图聚合 对于高基字段来说,做单点的分组聚合意义不大,一般都是对高基字段做直方图分组聚合,比如统计某个长度时间间隔的日志数。假如有如下查询语句: POST testindex/_search?pretty { "size": 0, "aggs": { "avg_score": { "avg": { "field": "score" }, "aggs": { "groupbytime": { "date_histogram": { "field": "timestamp", "calendar_interval": "day" } } } } } } 这条查询时对时间字段timestamp做直方图分组,然后求score的平均值。timestamp是典型的高基字段,如果要对上述查询使用聚合增强特性,那么设置如下: // 索引设置 "settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "timestamp" ] } } } 父主题: 聚合增强
  • 形态变更概述 CSS集群支持形态变更,包括集群扩容、集群规格变更、集群缩容等。当创建的集群规格不能满足业务需求时,可以通过形态变更,提高集群的使用效率,降低运维成本。 扩容 当集群数据节点(ess)的写入与查询压力大、响应时间过长时,可以通过扩容数据节点的“节点存储容量”保证数据的持久性。如果因数据量过大或操作不当导致数据节点状态异常时,可以扩容“节点数量”保证集群的可用性。 冷数据节点(ess-cold)主要用于分担ess数据节点的压力,当发现冷数据有丢失的风险时,可以扩容冷数据节点的“节点存储容量”保证冷数据的持久性,同时也支持扩容节点个数保证集群的可用性。 变更规格 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以变更Master节点(ess-master)的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,需要变更Client节点(ess-client)的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以变更数据节点(ess)的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以变更冷数据节点(ess-cold)的“节点规格”提高对数据查询的效率。 缩容 当集群有充足的能力处理当前数据时,为节省资源可以随机减小集群占用的资源。 缩容指定节点 当集群有充足的能力处理当前数据时,为节省资源可以指定一个或多个节点进行缩容。 替换指定节点 当集群中的节点发生故障,可以通过删除故障节点,重建一个一样的新节点,实现指定节点替换。 添加Master/Client节点 当集群数据面业务增长,需要动态调整集群形态时,可以增加Master/Client节点。 更改安全模式 集群创建完成后,可以通过更改安全模式进行集群模式变更。CSS服务支持如下几种安全模式更改: 非安全模式切换为安全模式:“非安全模式”切换为“安全模式+HTTP协议”或“安全模式+HTTPS协议” 安全模式切换为非安全模式:“安全模式+HTTP协议”或“安全模式+HTTPS协议”切换为“非安全模式” 切换安全模式下的协议:“安全模式+HTTP协议”切换为“安全模式+HTTPS协议”、“安全模式+HTTPS协议”切换为“安全模式+HTTP协议” 切换可用区 切换可用区包含两大场景:可用区高可用改造和可用区平移切换。 可用区高可用改造:适用于单AZ改造成两AZ、单AZ改造成三AZ或两AZ改造成三AZ的场景,目的是为了提升集群的高可用性。 可用区平移切换:适用于从一个AZ完全迁移到另一个AZ的场景,目的是为了解决当前可用区资源不足的问题。 父主题: 集群形态变更
  • 基本操作 Kibana(推荐) 登录Kibana,在DevTools中将请求发送到_opendistro/_sqlURI,可以使用请求参数或请求正文。 POST _opendistro/_sql { "query": "SELECT * FROM my-index LIMIT 50" } 默认情况下,查询返回JSON。您也可以选择CSV格式返回数据,选择CSV格式需要对format参数进行如下设置: POST _opendistro/_sql?format=csv { "query": "SELECT * FROM my-index LIMIT 50" } CSV格式返回数据时,每行对应一个文档,每列对应一个字段。 curl命令 您也可以在ECS中使用curl命令,来执行该SQL操作。 curl -XPOST https://localhost:9200/_opendistro/_sql -u username:password -k -d '{"query": "SELECT * FROM kibana_sample_data_flights LIMIT 10"}' -H 'Content-Type: application/json'
  • 修改参数 修改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" }
  • 查询冷数据本地缓存API 您可以使用该API查询冷数据本地缓存的相关指标。 请求示例 GET /_frozen_stats/local_cache GET /_frozen_stats/local_cache/{nodeId} 响应示例 { "_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 //初始化冷数据本地缓存的失败次数 } } } } }
  • 配置参数 配置项 类型 单位 取值范围 scope 是否可动态修改 作用 low_cost.local_cache.max.capacity Integer 无 10-5000,默认值500。 node 是 节点上,能够打开的冷数据缓存的最大数量。(每个shard对应一个缓存对象) 说明: 堆内存使用率一直很高,可以尝试降低该值。 如果查询冷数据本地缓存的相关统计指标中load_overflow_count数值一直持续快速增加,建议调大该值。 index.low_cost.local_cache.threshold Integer % 0-100,默认值50。 index 是 启用冷数据本地缓存的阈值。 说明: 如果date类型字段的占比小于此值。启用冷数据本地缓存date类型字段。否则不使用。 如果当前索引的date类型字段占据当前索引的绝大部分数据量,不建议使用此功能。 index.low_cost.local_cache.evict_time 字符串 天 1d-365d,默认值30d。 index 是 冷数据本地缓的淘汰时间。根据index.frozen_date(冻结成功的时间)判定。 说明: 如果为旧集群冻结的索引,无index.frozen_date,则根据索引创建时间判定。 建议根据磁盘用量调整淘汰时长,节省磁盘空间。
  • 场景描述 云搜索服务集成了共享型负载均衡器的能力,支持绑定公网访问和开启终端节点服务。相比共享型负载均衡器,独享型负载均衡器功能更丰富、性能更强,本章主要介绍如何使用独享型负载均衡器接入集群。 使用独享型负载均衡器接入集群具有如下优点: 非安全模式集群也支持集成弹性负载均衡服务的能力。 支持用户使用自定义证书进行HTTPS双向认证。 支持7层流量监控及告警配置,方便用户随时查看监控情况。 不同安全模式的集群对接独享型负载均衡器共有8种不同的服务形态,不同服务形态对应的ELB能力如表1所示,8种组合的配置概览如表2所示。 如果ELB绑定公网,则不推荐接入非安全模式的集群。非安全模式的集群使用HTTP通信且不需要安全认证即可访问,如果对外公网访问存在安全风险。 表1 不同集群对应的ELB能力 集群安全模式 ELB最终对外提供的服务形态 ELB负载均衡 ELB流量监控 ELB双向认证 非安全 无认证 支持 支持 不支持 单向认证 双向认证 支持 支持 支持 安全+HTTP 密码认证 支持 支持 不支持 单向认证+密码认证 双向认证+密码认证 支持 支持 支持 安全+HTTPS 单向认证+密码认证 双向认证+密码认证 支持 支持 支持 表2 不同集群对接ELB的配置概览 集群安全模式 ELB最终对外提供的服务形态 ELB监听器 后端服务器组 前端协议 前端端口 SSL解析方式 后端协议 健康检查端口 健康检查路径 非安全 无认证 HTTP 9200 无认证 HTTP 9200 / 单向认证 HTTPS 9200 单向认证 HTTP 9200 双向认证 HTTPS 9200 双向认证 HTTP 9200 安全+HTTP 密码认证 HTTP 9200 无认证 HTTP 9200 /_opendistro/_security/health 单向认证+密码认证 HTTPS 9200 单向认证 HTTP 9200 双向认证+密码认证 HTTPS 9200 双向认证 HTTP 9200 安全+HTTPS 单向认证+密码认证 HTTPS 9200 单向认证 HTTPS 9200 双向认证+密码认证 HTTPS 9200 双向认证 HTTPS 9200 父主题: (可选)对接独享型负载均衡器
  • 操作步骤 选择启用向量检索的集群,单击操作列“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 } }, "mappings": { "properties": { "my_vector": { "type": "vector", "indexing": true, "algorithm": "IVF_GRAPH", "dict_name": "my_dict", "offload_ivf": false } } } } 表1 Field mappings参数 参数 说明 dict_name 指定依赖的中心点索引名称。该索引字段的向量维度和度量方式将与dict索引保持一致,不再需要额外指定。 offload_ivf 将底层索引实现的IVF倒排索引卸载到ES端实现,可以减少堆外内存的使用,以及减少写入/合并的性能开销,但是查询的性能也有一定的损失。采用默认值即可。 取值范围:true、false。 默认值:false。
  • 背景信息 在向量索引加速算法中,IVF_GRAPH和IVF_GRAPH_PQ适用于超大规模场景。这两种算法需要通过对子空间的切割缩小查询范围,子空间的划分通常采用聚类或者随机采样的方式。在预构建之前,需要通过聚类或者随机采样得到所有的中心点向量。 当完成生成中心点向量的工作之后,需要对中心点向量进行预构建和注册,以实现将中心点向量预构建GRAPH或者GRAPH_PQ索引,同时注册到CSS集群内,实现在多个节点间共享此索引文件。中心点索引在shard间复用能够有效减少训练的开销、中心点索引查询次数,提升写入以及查询的性能。
  • 操作步骤 登录云搜索服务管理控制台。 在“集群管理”页面选择目标集群,单击操作列“Kibana”,登录Kibana界面。 单击左侧导航栏的“Dev Tools”,执行命令开启访问日志。 开启集群所有节点的访问日志 PUT /_access_log?duration_limit=30s&capacity_limit=1mb 开启集群中某一节点的访问日志 PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb {nodeId}为需要开启访问日志的节点ID。 执行命令查看访问日志API。 查看集群所有节点的访问日志API GET /_access_log 查看集群中某一节点的访问日志API GET /_access_log/{nodeId} {nodeId}为需要开启访问日志的节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-flowcontroller", "nodes" : { "8x-ZHu-wTemBQwpcGivFKg" : { "name" : "css-flowcontroller-ess-esn-1-1", "host" : "10.0.0.98", "count" : 2, "access" : [ { "time" : "2021-02-23 02:09:50", "remote_address" : "/10.0.0.98:28191", "url" : "/_access/security/log?pretty", "method" : "GET", "content" : "" }, { "time" : "2021-02-23 02:09:52", "remote_address" : "/10.0.0.98:28193", "url" : "/_access/security/log?pretty", "method" : "GET", "content" : "" } ] } } } 表2 响应参数说明 参数名 说明 name 节点名称。 host 节点对应的IP地址。 count 统计周期内,访问节点的请求数量。 access 统计周期内,访问节点的请求详情。参数说明请参见表3。 表3 access 参数名 说明 time 记录请求时间。 remote_address 请求对应的源IP地址和端口。 url 请求的原始URL method 对应请求Path的方法。 content 对应请求的内容。 执行命令开启或关闭访问日志文件记录。 访问日志功能提供配置开关可以记录用户的所有访问日志。日志默认会记录到后台的acces_log.log日志文件中。日志文件单个文件最大支持250M,最多保存5个文件。访问日志文件可以通过日志备份到OBS中查看。 开启访问日志文件记录 PUT /_cluster/settings { "persistent": { "flowcontrol.accesslog.enabled": true } } 关闭访问日志文件记录 PUT /_cluster/settings { "persistent": { "flowcontrol.accesslog.enabled": false } }
  • 背景信息 流量控制提供两种方式查看访问日志。 一种是提供单独的API开启和查看访问日志,API参数配置记录访问日志时间和大小,访问日志内容通过Rest接口返回。 一种是通过日志打印的方式记录访问日志,开启后用户的访问日志会以文件的方式打印到后端日志中,用户通过查看日志文件查看访问日志。 开启访问日志会影响集群性能。 在开启或关闭访问日志时,执行命令涉及的配置参数如下: 表1 访问日志的配置参数说明 配置名 类型 说明 duration_limit String 访问日志记录时间。 取值范围:10~120 单位:s 默认值:30 capacity_limit String 访问日志记录大小。统计开启访问日志后记录的请求大小,当统计的大小大于该配置值,访问日志记录终止。 取值范围:1~5 单位:MB 默认值:1 duration_limit和capacity_limit只要有一个参数达到阈值,访问日志记录就会停止。
  • 参数说明 在开启或关闭集群的内存流控时,执行命令涉及的配置参数如下: 表1 内存流控的配置参数说明 配置名 类型 说明 flowcontrol.memory.enabled Boolean 内存流控开关,开启后持续监控内存使用情况。取值: true false(默认值) flowcontrol.memory.heap_limit String 限制节点全局堆内存的使用率。超过此值将进行流量反压。 取值范围:10%-100% 默认值:90% flowcontrol.holding.in_flight_factor Float 反压释放因子,原理类似于熔断器network.breaker.inflight_requests.overhead参数。内存达到限制值时,该值越大反压越强,写入流量将受限。 取值范围:≥0.5 默认值:1.0 flowcontrol.holding.max TimeValue 每个请求最长的延迟时间,当延迟超过此值时可以设置断开该请求反压或断开请求链路。详见“flowcontrol.holding.max_strategy”配置。 取值范围:≥15s 默认值:60s flowcontrol.holding.max_strategy String 超过最大延迟时间后的运行策略。取值: keep(默认值):如果堆内存仍在高位,选择继续反压 - 何时执行请求仍由服务器根据实时内存自主决定。 soft:如果堆内存仍在高位,也必须执行该请求。执行/拒绝权力交给inFlight熔断器。 hard:如果堆内存仍在高位,丢弃该请求,同时断开该请求的客户端连接。 flowcontrol.memory.once_free_max String 被暂停的请求队列一次性最大重新打开的内存,防止强压场景下短暂的低内存现象一次性冲挂集群。 取值范围:1%-50% 默认值:10% flowcontrol.memory.nudges_gc Boolean 写入压力过大时(1s检查一次反压连接池,所有现有连接均被阻塞无法放开新的写入请求),是否尽力触发垃圾回收,保证写入稳定性。取值: true(默认值) false “flowcontrol.memory.enabled”和“flowcontrol.memory.heap_limit”是最重要的2个参数配置。enabled是内存流控开关,heap_limit是指节点堆内存的阈值。 “flowcontrol.memory.heap_limit”默认值90%是一个比较保守的阈值,即堆内存大于90%使用量时会停止读取客户端超过64KB的大请求,直至堆内存下降。如堆内存下降到85%,会开始允许最多一次读取5% × 堆内存最大值的客户端数据量。如果堆内存持续超过90%,则无法放开客户端连接的请求读取,此时会尝试触发GC算法进行垃圾回收,直到堆内存低于所设定的阈值; 日常使用时可以将“flowcontrol.memory.heap_limit”阈值设置为80%或以下,保证节点有一定的堆内存余量,供写入内存以外的行为使用,比如:Elasticsearch查询、Segment merge等。
  • 操作步骤 登录云搜索服务管理控制台。 在“集群管理”页面选择目标集群,单击操作列“Kibana”,登录Kibana界面。 单击左侧导航栏的“Dev Tools”,执行命令开启或关闭内存流控。 开启内存流控 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": true, "flowcontrol.memory.heap_limit": "80%" } } 关闭集群内存流控 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": false } }
  • 操作步骤 大查询隔离特性和全局超时特性默认关闭,用户可根据需要实时配置,配置后立即生效。以下是详细的配置方法: 登录云搜索服务管理控制台。 在“集群管理”页面,选择待配置大查询隔离的集群,单击操作列“Kibana”,登录Kibana界面。 在Kibana的左侧导航中选择“Dev Tools”,执行如下命令开启大查询隔离和全局超时的特性开关。 PUT _cluster/settings { "persistent": { "search.isolator.enabled": true, "search.isolator.time.enabled": true } } 以上两个开关是独立功能,分别具有以下独立的参数配置: 表1 大查询隔离和全局超时的参数配置 特性开关 配置参数 参数说明 search.isolator.enabled search.isolator.memory.task.limit search.isolator.time.management 单个分片查询任务被定义为大查询任务的阈值。 search.isolator.memory.pool.limit search.isolator.memory.heap.limit search.isolator.count.limit 触发隔离池内查询任务中断的阈值。 说明: 参数“search.isolator.memory.heap.limit”定义了节点实际堆内存的使用限制,包括写入和查询等操作,超过限制时将选取隔离池内的大查询任务进行中断。 search.isolator.strategy search.isolator.strategy.ratio 中断隔离池中某一条查询任务的选取策略。 search.isolator.time.enabled search.isolator.time.limit 全局查询任务超时设置。 大查询隔离和全局超时的分别具有独立的参数配置,可以根据实际场景执行不同的命令进行配置。 单个分片查询任务被定义为大查询任务的阈值。 PUT _cluster/settings { "persistent": { "search.isolator.memory.task.limit": "50MB", "search.isolator.time.management": "10s" } } 表2 参数说明 参数名 数据类型 说明 search.isolator.memory.task.limit String 查询任务用于聚合等操作向节点申请的大内存,申请内存超过此阈值将进行隔离观察。 取值范围:0b~节点最大堆内存 默认值:50MB 说明: 可以通过如下命令查询集群堆内存使用情况和最大值。 GET _cat/nodes?&h=id,ip,port,r,ramPercent,ramCurrent,heapMax,heapCurrent search.isolator.time.management String 查询任务创建至今的时长(即开始使用集群资源进行查询),超过阈值将被隔离观察。 取值范围:≥ 0ms 默认值:10s 触发隔离池内查询任务中断的阈值。 PUT _cluster/settings { "persistent": { "search.isolator.memory.pool.limit": "50%", "search.isolator.memory.heap.limit": "90%", "search.isolator.count.limit": 1000 } } 表3 参数说明 参数名 数据类型 说明 search.isolator.memory.pool.limit String 当前节点最大堆内存百分比,当隔离池所有大查询任务申请的内存超过此阈值将触发中断控制程序,取消执行隔离池其中一条大查询任务。 取值范围:0.0~100.0% 默认值:50% search.isolator.memory.heap.limit String 当前节点堆内存的实际使用阈值,当节点堆内存使用超过阈值百分比时触发中断控制程序,取消执行隔离池其中一条大查询任务。 取值范围:0.0~100.0% 默认值:90% search.isolator.count.limit Integer 当前节点隔离池的大查询任务数阈值,被观察的查询任务数超过此阈值将触发中断控制程序,不再接受新的大查询。如果继续触发大查询请求,则直接取消该请求。 取值范围:10~50000 默认值:1000 根据业务设置“search.isolator.memory.pool.limit”,“search.isolator.count.limit”参数时,可结合“search.isolator.memory.task.limit”,“search.isolator.time.management”两个参数控制查询任务进入到隔离池的数量。 中断隔离池中某一条查询任务的选取策略。 PUT _cluster/settings { "persistent": { "search.isolator.strategy": "fair", "search.isolator.strategy.ratio": "0.5%" } } 参数名 数据类型 说明 search.isolator.strategy String 触发中断控制程序时大查询选取的策略。根据策略选取一条查询进行中断。 说明: 大查询隔离池每秒检查一次,直至堆内存下降到安全范围。 取值范围:fair、mem-first、time-first mem-first策略是指触发中断时,选取隔离池中堆内存使用最大的一条查询任务进行中断。 time-first策略是指触发中断时,选取隔离池中已运行时间最长的一条查询任务进行中断。 fair策略是综合考虑内存和时间两种因素,如果分片查询的堆内存申请大小相差不超过“最大堆内存乘search.isolator.strategy.ratio”的大小,则认为时间较长的查询更应该中断。否则认为堆内存使用较大的查询更应该中断。 默认值:fair search.isolator.strategy.ratio String fair策略的阈值,仅当“search.isolator.strategy”值为“fair”生效。综合考虑大查询的运行时间及内存,当大查询任务内存相差不超过此阈值时,考虑选取运行时间长的大查询进行中断。当查询内存相差超过此阈值时,选取大内存查询任务进行中断。 取值范围:0.0-100.0% 默认值:1% 全局查询任务超时设置。 PUT _cluster/settings { "persistent": { "search.isolator.time.limit": "120s" } } 参数名 数据类型 说明 search.isolator.time.limit String 当全局查询超时功开启时,所有已创建的查询任务超过此时长将被取消执行。 取值范围:≥ 0ms 默认值:120s 父主题: 大查询隔离
  • 其他操作 自定义百分百数值。 您可以自行指定百分百数值: GET /search/stats/percentile { "percents": [1, 50, 90] } 重置latest统计值。 您可以执行以下命令重置latest统计值: POST /search/stats/reset 返回样例: { "nodes" : { "css-c9c8-ess-esn-1-1" : "ok" } }
  • 获取监控信息 登录云搜索服务管理控制台。 在“集群管理”页面,选择需要启用索引监控的集群,单击操作列“Kibana”,登录Kibana界面。 在左侧导航栏,选择“Dev Tools”,执行以下命令获取当前集群的P99时延: GET /search/stats/percentile 返回样例如下: { "overall" : { "1.0" : 2.0, "5.0" : 2.0, "25.0" : 6.5, "50.0" : 19.5, "75.0" : 111.0, "95.0" : 169.0, "99.0" : 169.0, "max" : 169.0, "min" : 2.0 }, "last_one_day" : { "1.0" : 2.0, "5.0" : 2.0, "25.0" : 6.5, "50.0" : 19.5, "75.0" : 111.0, "95.0" : 169.0, "99.0" : 169.0, "max" : 169.0, "min" : 2.0 }, "latest" : { "1.0" : 26.0, "5.0" : 26.0, "25.0" : 26.0, "50.0" : 26.0, "75.0" : 26.0, "95.0" : 26.0, "99.0" : 26.0, "max" : 26.0, "min" : 26.0 } } 其中“overall”表示集群从启动到当前时间的统计值,“last_one_day”表示最近一天的统计值,“latest”表示从上次重置到当前时间的统计值。 P99时延的计算是近似值,不提供精确值,越靠近两端的统计值越准确,即99%的时延比50%的时延更准确。 如果重启集群,P99时延数据将被清空,P99时延数据将从集群重启成功后重新计算。
  • 修订记录 发布日期 修改说明 2024-04-18 体验优化更新用户指南大纲 控制台升级,更新界面图 Elasticsearch集群支持跨引擎升级:升级集群版本 集群变更规格支持检测集群状态:变更规格 2024-02-20 向量索引类型支持PV_GRAPH算法:使用PV_GRAPH向量索引 新增OpenSearch告警插件:设置SMN告警 创建集群时支持选择共享虚拟私有云:创建Elasticsearch类型集群、创建集群、创建集群 新增开启访问日志记录到文件 2023-12-25 包年/包月集群新增修改自动续费功能:修改自动续费 2023-12-15 新增OpenSearch集群:创建集群 2023-11-30 更新查看云审计事件:查询审计事件 2023-10-30 Logstash集群配置文件支持批量导出:批量导出配置文件 2023-08-31 集群支持创建极速型SSD节点:创建Elasticsearch类型集群、创建集群 支持重启Logstash集群:强制重启集群VMs 支持通过企业项目和私有IP查询集群:集群列表概览 版本升级增加集群负载检测:创建升级任务 2023-07-31 新增Logstash集群:Logstash 支持读写分离、导入性能增强、聚合增强 支持版本升级至6.8.23版本:升级集群版本 支持在云搜索服务管理控制台绑定负载均衡器:对接独享型负载均衡器 新增智能运维:智能运维 2023-5-30 新增节点支持的监控指标 支持开源OpenDistro告警插件,新增:设置SMN告警和(可选)授权服务使用SMN 支持下载集群列表,更新:集群列表概览 体验优化更新用户指南大纲 下线折扣套餐包详情 支持切换可用区,新增切换可用区 新增版本升级功能:升级集群版本 2023-03-27 更新前提条件:自建Kibana接入Elasticsearch集群 更新操作步骤说明:使用Kibana创建用户并授权 2023-03-20 支持集群从大规格变更为小规格:变更规格 新增监控OBS操作:监控OBS操作 2023-03-06 更新优化操作步骤:备份与恢复索引 2023-02-03 支持切换安全组,新增查看集群基本信息 补充导入索引监控图表:查看索引监控 新增查询冷数据性能提升:查询冷数据性能提升 新增流量控制2.0版本:流量控制2.0 2023-01-20 更新优化配置集群监控的操作流程说明:配置集群监控 2023-01-18 新增(从产品介绍合入): 安全模式集群 部署跨AZ集群 快速访问Elasticsearch集群 2022-12-14 绑定企业项目更新操作步骤:绑定企业项目 添加监听器的参数修改:对接独享型负载均衡器 补充推荐配置的监控指标:配置集群监控 2022-12-07 优化监控指标含义:Elasticsearch&OpenSearch集群支持的监控指标 2022-11-30 支持对接独享型负载均衡器: 新增(可选)对接独享型负载均衡器 优化公网访问集群和终端节点访问集群 体验优化,更新大纲和内容:自定义词库 2022-11-09 新增特性: 替换指定节点 添加Master/Client节点 更改安全模式 集群监控增强 内容更新: 创建安全模式集群 创建非安全模式集群 公网访问集群 Kibana公网访问集群 下线特性:折扣套餐包 2022-10-20 新增存算分离的约束说明:背景信息 2022-06-30 新增Elasticsearch 7.10.2版本,下线Elasticsearch 7.9.3版本。 界面更新涉及用户指南操作步骤更新。 基于功能更新,优化形态变更大纲和内容:形态变更 内容优化,提升文档易用性: 重启集群 删除集群 查看系统默认插件列表 配置集群监控 2022-05-24 支持流量控制:流量控制1.0 支持大查询隔离:大查询隔离 支持索引监控:索引监控 基于用户场景和操作流程,优化和完善内容: 创建安全模式集群 创建非安全模式集群 备份与恢复索引 绑定企业项目 管理标签 管理日志 切换冷热数据 创建向量索引 Kibana公网访问集群 2022-04-20 优化内容描述: CSS自定义策略 配置自定义词库 存算分离 使用Kibana或API导入数据到Elasticsearch 2022-03-03 支持向量检索:向量检索 2022-01-24 支持存算分离:存算分离 2021-12-31 新增内容:转换计费模式 2021-10-12 删除Logstash类型集群相关信息。 2021-05-17 删除泊松分词。 2021-03-02 新增Logstash类型集群: 创建Logstash类型集群 管理Logstash类型集群 2021-01-30 新增7.9.3版本。 2020-08-25 支持细粒度授权:CSS自定义策略 2020-07-30 新增内容: 套餐包详情 Kibana公网访问集群 2020-03-23 第十次正式发布。 新增 更改集群名称 修改 终端节点访问集群 2020-01-11 第九次正式发布。 新增 查看系统默认插件列表 2019-12-11 第八次正式发布。 新增 终端节点访问集群 2019-11-08 第七次正式发布。 新增 配置YML参数 2019-10-31 第六次正式发布。 新增 管理日志 切换冷热数据 2019-09-27 第五次正式发布。 新增 公网访问集群 2019-09-10 第四次正式发布。 新增 管理标签 修改 创建安全模式集群 重启集群 2019-08-16 第三次正式发布。 修改 创建安全模式集群 2019-07-09 第二次正式发布。 新增 使用SQL编写查询(使用Open Distro sql插件) 修改 创建安全模式集群 集群列表概览 2019-04-15 第一次正式发布。
  • CSS自定义策略样例 如果是子账号,需要同时设置GetBucketStoragePolicy、GetBucketLocation、ListBucket、ListAllMyBuckets权限,才能看到OBS桶。 示例1:授权用户创建集群。 { "Version": "1.1", "Statement": [ { "Action": [ "css:cluster:create", "vpc:securityGroups:get", "vpc:securityGroups:create", "vpc:securityGroups:delete", "vpc:securityGroupRules:get", "vpc:securityGroupRules:create", "vpc:securityGroupRules:delete", "vpc:vpcs:list", "vpc:privateIps:list", "vpc:ports:get", "vpc:ports:create", "vpc:ports:update", "vpc:ports:delete", "vpc:quotas:list", "vpc:subnets:get", "ecs:cloudServerFlavors:get", "ecs:serverInterfaces:use", "ecs:cloudServers:addNics", "ecs:quotas:get", "evs:types:get", "evs:quotas:get" ], "Effect": "Allow" } ] }
  • 原理 向量检索从本质上讲,其思维框架和传统的检索方法没有区别。为了提升向量检索的性能,通常需要解决以下两个问题: 减少候选向量集 和传统的文本检索类似,向量检索也需要某种索引结构来避免在全量的数据上做匹配,传统文本检索是通过倒排索引来过滤掉无关文档,而向量检索是通过对向量建立索引结构来绕过不相关的向量,减小需要考察的范围。 降低单个向量计算的复杂度 向量检索支持漏斗模型,先对所有向量进行量化和近似计算,筛选出一定量接近检索目标的数据集,然后基于筛选的数据集进行精细的计算和排序。本方法不需要对所有向量都进行复杂的计算,可以有效提高检索效率。 向量检索即在一个给定的向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。
  • 功能 华为云自研向量检索引擎集成了暴力检索、图索引(HNSW)、乘积量化、IVF-HNSW等多种向量索引,支持欧式、内积、余弦、汉明等多种相似度计算方式,召回率和检索性能均优于开源引擎。能够满足高性能、高精度、低成本、多模态等多种应用场景及需求。 向量检索支持原生Elasticsearch的所有能力,包括分布式、多副本、错误恢复、快照、权限控制等;兼容所有原生Elasticsearch生态,包括集群监测工具Cerebro,可视化工具Kibana,实时数据采集工具Logstash等;提供Python/Java/Go/C++等多种客户端语言支持。
  • SecuredHttpClientConfigCallback代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.apache.http.nio.conn.ssl.SSLIOSessionStrategy; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.common.Nullable; import java.util.Objects; class SecuredHttpClientConfigCallback implements RestClientBuilder.HttpClientConfigCallback { @Nullable private final CredentialsProvider credentialsProvider; /** * The {@link SSLIOSessionStrategy} for all requests to enable SSL / TLS encryption. */ private final SSLIOSessionStrategy sslStrategy; /** * Create a new {@link SecuredHttpClientConfigCallback}. * * @param credentialsProvider The credential provider, if a username/password have been supplied * @param sslStrategy The SSL strategy, if SSL / TLS have been supplied * @throws NullPointerException if {@code sslStrategy} is {@code null} */ SecuredHttpClientConfigCallback(final SSLIOSessionStrategy sslStrategy, @Nullable final CredentialsProvider credentialsProvider) { this.sslStrategy = Objects.requireNonNull(sslStrategy); this.credentialsProvider = credentialsProvider; } /** * Get the {@link CredentialsProvider} that will be added to the HTTP client. * * @return Can be {@code null}. */ @Nullable CredentialsProvider getCredentialsProvider() { return credentialsProvider; } /** * Get the {@link SSLIOSessionStrategy} that will be added to the HTTP client. * * @return Never {@code null}. */ SSLIOSessionStrategy getSSLStrategy() { return sslStrategy; } /** * Sets the {@linkplain HttpAsyncClientBuilder#setDefaultCredentialsProvider(CredentialsProvider) credential provider}, * * @param httpClientBuilder The client to configure. * @return Always {@code httpClientBuilder}. */ @Override public HttpAsyncClientBuilder customizeHttpClient(final HttpAsyncClientBuilder httpClientBuilder) { // enable SSL / TLS httpClientBuilder.setSSLStrategy(sslStrategy); // enable user authentication if (credentialsProvider != null) { httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } return httpClientBuilder; } }
共100000条