云服务器内容精选

  • 产品功能 开源兼容 兼容开源Elasticsearch和OpenSearch软件原生接口,完美支持Logstash、Beats、Kibana等周边生态。 接入多种数据源 无缝对接Ftp/Obs/Hbase/Kafka等多种数据源,仅需简单配置,无需编程。 一键化操作 一键申请集群、一键扩容、一键重启,从小规模测试到大规模上线,所有主要操作都是一键可达。 灵活词库管理 支持自定义词库与拼音分词,支持词库热更新,无需重启,配置即生效。 自定义快照策略 支持用户触发以及定时触发的快照备份能力,支持恢复到本集群以及其他集群的能力,随时恢复误删数据或者迁移数据到新的搜索集群。
  • 访问方式 公有云提供了Web化的服务管理平台,即管理控制台和基于HTTPS请求的API(Application programming interface)管理方式。 API方式 如果用户需要将公有云平台上的 云搜索服务 集成到第三方系统,用于二次开发,请使用API方式访问 云搜索 服务,具体操作请参见《云搜索服务API参考》。 控制台方式 其他相关操作,请使用管理控制台方式访问云搜索服务。如果用户已注册公有云,可直接登录管理控制台,在服务列表搜索“云搜索服务”。如果未注册,请单击右上方“注册”,根据界面提示填写用户基本信息,然后单击“同意协议并注册”完成管理控制台用户注册。
  • 什么是云搜索服务 云搜索服务(Cloud Search Service,简称 CSS )是一个基于Elasticsearch、OpenSearch且完全托管的在线分布式搜索服务,为用户提供结构化、非结构化文本、以及基于AI向量的多条件检索、统计、报表。云搜索服务是华为云ELK生态的一系列软件集合,为您全方位提供托管的ELK生态云服务,兼容Elasticsearch、Logstash、Kibana、Cerebro等软件。 Elasticsearch和OpenSearch Elasticsearch、OpenSearch是开源搜索引擎,可以实现单机和集群部署,并提供托管的分布式搜索引擎服务。在ELK整个生态中,Elasticsearch集群支持结构化、非结构化文本的多条件检索、统计、报表。Elasticsearch搜索引擎相关内容的深入介绍可参见《Elasticsearch:权威指南》。OpenSearch搜索引擎相关内容的深入介绍可参见《OpenSearch Documentation》。 云搜索服务支持自动部署,快速创建Elasticsearch集群和OpenSearch集群,免运维,内置搜索调优实践;拥有完善的监控体系,提供一系列系统、集群以及查询性能等关键指标,让用户更专注于业务逻辑的实现。 Logstash Logstash是一个开源数据收集引擎,具有实时管道功能。在ELK整个生态中,Logstash承担着数据接入的重要功能,可以动态地将来自不同数据源的数据统一起来,进行标准化的转换,然后将数据发送到指定的位置。 云搜索服务支持快速创建Logstash集群,华为云Logstash是一款全托管的数据接入处理服务,100%兼容开源Logstash的能力。在生产系统中,数据往往以各种各样的形式,或分散或集中地存在于很多系统中。华为云Logstash的出现,能够很轻松的帮助您处理各种来源的数据并转储到华为云Elasticsearch云服务中,从而更加方便的发现其中的价值。同时您也可以单独使用Logstash云服务处理数据发送到其他的系统中。
  • Elasticsearch集群版本特性差异 表1 Elasticsearch集群版本特性 版本特性 5.x版本 6.x版本 7.x版本 多type支持情况 支持一个index里面包含多个type,每个type名称可以自定义。 支持一个index里面只能有一个type,type名称可以自定义。 支持一个index里面只能有一个type,type名称是固定的,_doc不能自定义。 客户端接入 支持TransportClient,可以同时使用tcp和http进行连接请求。 支持TransportClient,可以同时使用tcp和http进行连接请求。建议使用Java High Level REST Client。 只支持RestClient,只支持使用http进行连接请求。建议使用Java High Level REST Client。 Elasticsearch 5.x版本使用TransportClient接入Elasticsearch集群的样例: // 初始化客户端,连接9300端口 TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300)); // 关闭客户端 client.close(); Elasticsearch 6.x版本、7.x版本中使用Java High Level REST Client接入集群的样例: // 初始化客户端,连接9200端口 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost", 9200, "http"), new HttpHost("localhost", 9201, "http"))); // 关闭客户端 client.close(); 模板配置 Elasticsearch 5.x版本中创建模板使用的是template字段。 Elasticsearch 5.x版本样例: PUT _template/template_1 { "template": "te*", "settings": { "number_of_shards": 1 } } Elasticsearch 6.x及以上版本开始使用index_pattern字段。 Elasticsearch 6.x及以上版本样例: PUT _template/template_1 { "index_patterns": ["te*"], "settings": { "number_of_shards": 1 } } boolean类型解析变化 Elasticsearch 5.x版本中如下值都可以被解析成boolean: true, false, on, off, yes, no, 0, 1。 Elasticsearch 6.x及以上版本只接受true/false,其他值会抛异常。 以下语句在Elasticsearch 5.x版本不会报错,在Elasticsearch 6.x/7.x版本会直接报错: GET data1/_search { "profile": "noprofile", "query": { "match_all": {} } } JSON格式校验 Elasticsearch 5.x中允许JSON中存在重复的key,后台会自动去掉。 Elasticsearch 6.x及以上版本不允许JSON存在重复的key,会直接报解析错误。 以下语句在Elasticsearch 5.x版本不会报错,在Elasticsearch 6.x/7.x版本中会报错: POST data1/doc { "isl": 0, "isl": 1 } DELETE文档变化 Elasticsearch 5.x中,执行 DELETE index1/doc/1,如果index1不存在,会将index1创建出来。 Elasticsearch 6.x及以上版本,如果执行删除文档的索引不存在,会报错索引不存在。 _alias API校验 Elasticsearch 5.x中,_alias API允许在index字段中指定为别名,能正常解析。 类似的,Elasticsearch 5.x版本中允许使用别名删除一个索引。 Elasticsearch 6.x版本中,_alias API中的index字段只能指定为索引名,不允许是别名。 Elasticsearch 6.x版本中不再允许,必须使用索引名进行删除。 如以下示例,在Elasticsearch 5.x版本中能正常工作,但是在Elasticsearch 6.x版本/7.x版本中会报错: PUT log-2023.11.11 POST _aliases { "actions": [ { "add": { "index": "log-2023.11.11", "alias": "log" } } ] } POST _aliases { "actions": [ { "remove": { "index": "log", "alias": "log" } } ] } 报错信息: { "error" : { "root_cause" : [ { "type" : "illegal_argument_exception", "reason" : "The provided expression [log] matches an alias, specify the corresponding concrete indices instead." } ], "type" : "illegal_argument_exception", "reason" : "The provided expression [log] matches an alias, specify the corresponding concrete indices instead." }, "status" : 400 } 默认配置变化 新建索引默认分片数为5。 新建索引默认分片数为1。 默认routing变化 Elasticsearch 5.x版本/6.x版本使用以下公式计算文档应该落在哪个shard。 shard_num = hash(_routing) % num_of_primary_shards Elasticsearch 7.x版本使用以下公式计算文档应该落在哪个shard routing_factor = num_routing_shards / num_primary_shards shard_num = (hash(_routing) % num_routing_shards) / routing_factor 其中num_routing_shards 可以由以下配置指定。 index.number_of_routing_shards 如果不显式指定,则Elasticsearch会自动计算该值,以达到对索引进行split的能力。 Refresh时机变化 默认定期每秒钟执行refresh。 Elasticsearch 7.x版本中如果没有显式的指定index.refresh_interval,并且索引长时间没有search请求,这里的长时间是由配置index.search.idle.after指定,默认30秒,Elasticsearch就不会再定期的进行refresh,而是等到有新的search请求进来时再进行refresh,这时候进行的search请求会等待,直到下一轮refresh完成才进行检索并返回,所以第一次search请求一般耗时会相对较长。 父熔断器变化 父熔断器是在多个子熔断器中内存统计之和超限的情况下触发,超限阈值为70%。 父熔断器会在堆内存超限的情况下触发,默认超限阈值为95%。 Field Data熔断器阈值变化 Field Data熔断器超限阈值indices.breaker.fielddata.limit默认为60%。 Field Data熔断器超限阈值indices.breaker.fielddata.limit默认为40%。 _all字段支持情况 支持_all字段。 _all字段被废弃。 E删除_all字段,不再支持。 search API返回中hits.total Elasticsearch 5.x版本/6.x版本中,search API返回中,hits.total为数字,表示命中条数: { "took": 0, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 4, "max_score": 1, } } Elasticsearch 7.x版本中,hits.total不再是数字: { "took" : 76, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : 1.0 } } 其中: value表示命中的条数。 relation表示value参数中的命中条数是否是准确值。 eq表示是准确值。 gte表示命中条数大于等于value参数。 _cache/clear API _cache/clear API支持POST/GET方式。 _cache/clear API只支持POST方式,不再支持GET方式。
  • 上传词库文件至OBS 配置自定义词库需要提前将词库上传至OBS桶。 按表1要求准备词库文件。 表1 词库说明 词库类型 概述 文件要求 主词词库 主词为用户希望进行分词的特殊词语,如上文场景中的“智能手机”和“喜大普奔”。主词库则是这些特殊词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。如果涉及单词,必须改成小写字母。主词库文件最大支持100M。 停词词库 停词为用户不希望进行分词或者关注的词语,如“的”、“什么”、“怎么”等。停词词库是停词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。停词词库文件最大支持80M。 同义词词库 同义词为意义相同的一组词语,如“开心”和“高兴”。同义词词库是同义词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一组同义词,同义词之间用英文逗号隔开。同义词词库文件最大支持80MB。 上传词库文件至OBS桶,详细操作步骤请参见上传文件。上传的OBS桶必须和集群所在“区域”相同。
  • 背景信息 自定义词库使用的分词器包括IK分词器和同义词分词器。 IK分词器配备主词词库和停词词库;同义词分词器配备同义词词库。配置自定义词库需要提前准备词库文件并上传至OBS,详情请见上传词库文件至OBS。 其中,IK分词器包含ik_max_word和ik_smart分词策略。同义词分词器使用的是ik_synonym分词策略。 ik_max_word:会将文本做最细粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,昨夜,西风,吹折千林梢,吹折,千林梢,千,林,折千林,千林,吹”,会穷尽各种可能的分词组合。 ik_smart:会做最粗粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,吹折千林梢”。
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。修改“节点规格”请执行变更规格操作。修改“节点存储容量”请执行扩容操作。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 如果集群没有启用Master节点,缩容后剩余的数据节点个数(包含冷数据节点和其他类型节点)须大于之前的一半,并大于索引的最大副本个数。 关于有Master节点的集群,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。 两个节点的集群暂不支持缩容,可使用单节点重新创建集群,使用备份与恢复迁移集群数据至新集群中。 当集群包含的节点类型不同时,缩容的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • 配置自定义词库 在云搜索服务管理控制台,在左侧菜单栏选择对应的集群类型,进入集群管理页面。 在“集群管理”页面,单击需要配置自定义词库的集群名称,进入集群基本信息页面。 选择“自定义词库”。 在“自定义词库”页面,您可以单击开关来开启或关闭自定义词库功能。 OBS桶:主词库、停词词库和同义词词库文件存储的OBS桶位置。如果当前没有可用OBS桶,您可以单击“创建桶”进行创建,并将词库导入OBS桶中,详细操作步骤请参见创建桶。创建的OBS桶必须和集群所在“区域”相同。 主词词库对象:主词词库文件必须是UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。如果涉及单词,必须改成小写字母。主词库文件最大支持100M。 停词词库对象:停词词库文件必须是UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。停词词库文件最大支持80M。 同义词词库对象:同义词词库文件必须是UTF-8无BOM格式编码的文本文件,且文件中每一行为一组同义词,同义词之间用英文逗号隔开。同义词词库文件最大支持80MB。 图1 配置自定义词库 单击“保存”,在“确认”对话框中,单击“确定”。词库信息在下方呈现,此时词库状态为“更新中”。请耐心等待1分钟左右,当词库配置完成后,词库状态变更为“成功”,此时,配置的词库信息已在此集群中生效。
  • 背景信息 自定义词库使用的分词器包括IK分词器和同义词分词器。 IK分词器配备主词词库和停词词库;同义词分词器配备同义词词库。配置自定义词库需要提前准备词库文件并上传至OBS,详情请见上传词库文件至OBS。 其中,IK分词器包含ik_max_word和ik_smart分词策略。同义词分词器使用的是ik_synonym分词策略。 ik_max_word:会将文本做最细粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,昨夜,西风,吹折千林梢,吹折,千林梢,千,林,折千林,千林,吹”,会穷尽各种可能的分词组合。 ik_smart:会做最粗粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,吹折千林梢”。
  • 上传词库文件至OBS 配置自定义词库需要提前将词库上传至OBS桶。 按表1要求准备词库文件。 表1 词库说明 词库类型 概述 文件要求 主词词库 主词为用户希望进行分词的特殊词语,如上文场景中的“智能手机”和“喜大普奔”。主词库则是这些特殊词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。如果涉及单词,必须改成小写字母。主词库文件最大支持100M。 停词词库 停词为用户不希望进行分词或者关注的词语,如“的”、“什么”、“怎么”等。停词词库是停词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一个分词。停词词库文件最大支持80M。 同义词词库 同义词为意义相同的一组词语,如“开心”和“高兴”。同义词词库是同义词词语的集合。 UTF-8无BOM格式编码的文本文件,且文件中每一行为一组同义词,同义词之间用英文逗号隔开。同义词词库文件最大支持80MB。 上传词库文件至OBS桶,详细操作步骤请参见上传文件。上传的OBS桶必须和集群所在“区域”相同。
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 当集群包含的节点类型不同时,缩容的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。修改“节点规格”请执行变更规格操作。修改“节点存储容量”请执行扩容操作。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 如果集群没有启用Master节点,缩容后剩余的数据节点个数(包含冷数据节点和其他类型节点)须大于之前的一半,并大于索引的最大副本个数。 关于有Master节点的集群,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。 两个节点的集群暂不支持缩容,可使用单节点重新创建集群,使用备份与恢复迁移集群数据至新集群中。 当集群包含的节点类型不同时,缩容的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • 智能运维概述 CS S服务提供智能运维功能,支持检测集群潜在风险,并给出风险处理的建议。 当前Elasticsearch集群和OpenSearch集群均支持智能运维功能。 智能运维支持以下功能: 启动检测任务 使用智能运维功能首先需要启动检测任务。 查看集群风险项 启动检测任务后,系统会开始诊断集群,可在智能运维列表查看集群存在的风险项详情。 删除检测任务 当您已处理完检测任务中所发现的风险项,不在需要历史所创建的检测任务,可删除检测任务。 父主题: 智能运维
  • 检测项 检测任务会从如下项目对集群进行检测,如存在风险,可在智能运维列表查看风险项。 检查当前时刻集群的健康状态,其中red表示有主分片未分配,yellow表示有副分片未分配,green表示所有分片均已分配。 检测集群节点数与AZ(可用区)数,判定Elasticsearch分布式集群的高可用性。 检测集群索引是否开启副本,未设置副本的索引在节点发生故障后可能导致索引不可用,本地盘集群未设置副本会有数据丢失的风险。 检测集群是否存在kibana索引冲突。 检测节点磁盘用量百分比,节点磁盘存储过大可能导致节点无法分配新索引分片并影响集群性能。 检测集群数据节点/冷数据节点的存储用量是否均衡,不均衡的存储用量分布可能导致集群负载不均,读写延迟增加。 连续5分钟检测当前集群是否有节点脱离或不可用。 检测节点分片数量是否过多,单节点分片数量过多会消耗大量节点资源,读写请求时延增加,集群元数据更新缓慢等。 检测所有分片大小,分片太大可能导致查询性能下降,节点内存消耗增加,影响扩缩容以及节点故障时分片的恢复速率等。 检测当前集群是否存在可升级的版本。 检测集群7天内是否有快照备份失败,或7天内无快照备份记录。
  • 操作步骤 登录云搜索服务管理控制台。 在集群管理页面,单击需要进行智能运维的集群名称,跳转至该集群基本信息页面。 选择“智能运维”。 在智能运维列表页面,单击左上角的“启动检测”。 在对话框中填写检测任务的基本信息,单击“确定”。 表1 检测任务基本信息说明 参数 说明 名称 检测任务的名称。 描述 检测任务的简短描述。 SMN 主题 如果勾选“任务完成后发送SMN告警”,可选择当前账号已创建的SMN主题。 如果未创建SMN主题,请先前往SMN服务创建主题。 告警灵敏度 如果勾选“任务完成后发送SMN告警”,可选择告警灵敏度。 检测到的风险项存在大于等于此风险敏感度的条目,则发送SMN告警消息,消息内容则包含所有风险项。 创建检测任务后,可在智能运维列表查看新创建的检测任务。