云服务器内容精选

  • 如何转换CER安全证书的格式? 启用了HTTPS访问的安全集群可以下载CSS服务安全证书(CloudSearchService.cer)。而大多数软件支持“.pem”或“.jks”格式的证书,因此要对安全证书进行格式转换。 将安全证书从“.cer”格式转换为“.pem”格式。 openssl x509 -inform pem -in CloudSearchService.cer –out newname.pem 将安全证书从“.cer”格式转换为“.jks”格式。 keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer 其中,newname是由用户自定义的证书名称。 执行命令后,会提示设置证书密码,并确认密码。请保存该密码,后续接入集群会使用。 父主题: 安全模式集群
  • 使用API导入数据 使用bulk API通过curl命令导入数据文件,如下操作以JSON数据文件为例。 使用API导入数据文件时,建议导入的数据文件大小不能超过50MB。 本案例以非安全模式的集群为例介绍curl命令导入数据,如果是其他模式的集群请参见通过Curl命令行接入集群接入集群。 登录即将接入集群的弹性云服务器。 登录弹性云服务器的详细操作请见登录弹性云服务器。 将JSON数据文件上传至ECS。 在ECS中存放JSON数据文件的路径下执行如下命令,将JSON数据导入到Elasticsearch集群。 其中,{Private network address and port number of the node}需替换为集群中节点的内网访问地址和端口号,当该节点出现故障时,将导致命令执行失败。如果集群包含多个节点,可以将{Private network address and port number of the node}替换为集群中另一节点的内网访问地址和端口号;如果集群只包含一个节点,则需要将该节点修复之后再次执行命令进行导入数据。test.json为导入数据的json文件。 curl -X PUT "http://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json 其中,-X参数的参数值为命令,如“-X PUT”,-H参数的参数值为消息头,如“-H 'Content-Type: application/json' --data-binary @test.json”。添加的-k参数时,请勿将-k参数放置在参数与参数值之间。 示例:将“test.json”数据文件中的数据导入至Elasticsearch集群,此集群未进行通信加密,其中一个节点内网访问地址为“192.168.0.90”,端口号为“9200”。其中test.json文件中的数据如下所示: 低于7.x版本 {"index": {"_index":"my_store","_type":"products"}} {"productName": "2019秋装新款文艺衬衫女装","size": "M"} {"index": {"_index":"my_store","_type":"products"}} {"productName": "2019秋装新款文艺衬衫女装","size": "L"} 7.x版本及高于7.x版本 {"index": {"_index":"my_store"}} {"productName": "2019秋装新款文艺衬衫女装","size": "M"} {"index": {"_index":"my_store"}} {"productName": "2019秋装新款文艺衬衫女装","size": "L"} 导入数据的操作步骤如下所示: 可执行以下命令,创建my_store索引。 低于7.x版本 curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d ' { "settings": { "number_of_shards": 1 }, "mappings": { "products": { "properties": { "productName": { "type": "text" }, "size": { "type": "keyword" } } } } }' 7.x版本及高于7.x版本 curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d ' { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "productName": { "type": "text" }, "size": { "type": "keyword" } } } }' 执行以下命令,导入test.json文件中的数据。 curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json 本案例回显如下信息,表示数据导入成功。 {"took":204,"errors":false,"items":[{"index":{"_index":"my_store","_type":"_doc","_id":"DJQkBIwBbJvUd2769Wi-","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1,"status":201}},{"index":{"_index":"my_store","_type":"_doc","_id":"DZQkBIwBbJvUd2769Wi_","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1,"status":201}}]}
  • 约束限制 如果集群已经具有Master节点和Client节点,则“形态变更”页面将不存在“添加Master/Client节点”页签。如此时需要添加Master节点和Client节点,可以执行扩容任务。 添加Master节点或Client节点时,不同节点类型的可配置节点数量不同,具体情况请参考表1。 表1 不同节点类型的节点数量说明 节点类型 节点数量的取值范围 Master节点 3~9的奇数 Client节点 1~32
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 约束限制 如果集群已经具有Master节点和Client节点,则“形态变更”页面将不存在“添加Master/Client节点”页签。如此时需要添加Master节点和Client节点,可以执行扩容任务。 添加Master节点或Client节点时,不同节点类型的可配置节点数量不同,具体情况请参考表1。 表1 不同节点类型的节点数量说明 节点类型 节点数量的取值范围 Master节点 3~9的奇数 Client节点 1~32
  • 其他管理接口 获取已创建的模式 该接口支持列表查询和指定名称查询。 请求示例如下: GET auto_sync/pattern GET auto_sync/pattern/{pattern_name} 接口返回示例如下: { "patterns" : [ { "name" : "pattern1", "pattern" : { "remote_cluster" : "leader", "remote_index_patterns" : [ "log*" ], "local_index_pattern" : "{{remote_index}}-sync", "settings" : { } } } ] } 删除已创建的模式 该接口支持指定模式名称删除 请求示例如下: DELETE auto_sync/pattern/{pattern_name} 获取自动同步状态 该接口可以获取匹配索引同步的状态。 请求示例如下: 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 } } ] } } } } 修改同步周期 同步周期默认30秒,支持修改。 请求示例如下(修改同步周期为2秒): PUT {index_name}/_settings { "index.remote_sync.sync_interval": "2s" } 开启强制同步 插件默认根据主集群索引的文档数是否发生变化来决定是否要同步元数据,当主集群只对文档进行更新且文档数不变时,插件不会同步该更新到从集群。支持修改配置,开启后,每个同步周期从集群都会强制同步主机群的索引元数据。 请求示例如下(开启强制同步): PUT _cluster/settings { "persistent": { "remote_sync.force_synchronize": true } } 父主题: 使用说明
  • 约束限制 缩容操作仅支持修改“节点数量”,不支持修改“节点规格”和“节点存储容量”。 缩容什么节点类型的“节点数量”,缩容完成后只生效新该节点类型的“节点数量”,其他节点类型的“节点数量”保持不变。 要确保缩容之后的磁盘使用量小于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。 关于跨AZ的集群,在不同AZ中同类型节点个数的差值要小于等于1。 关于没有Master节点的集群,每次缩容的数据节点和冷数据节点个数之和要小于缩容前数据节点和冷数据节点个数之和的一半,缩容后的数据节点和冷数据节点个数之和要大于索引的最大副本个数。 关于有Master节点的集群,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。
  • 约束限制 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 关于跨AZ的集群,在不同AZ中同类型节点个数的差值要小于等于1。 关于没有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:冷数据节点
  • 什么是云搜索服务 云搜索服务(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和OpenSearch软件原生接口,完美支持Logstash、Beats、Kibana等周边生态。 接入多种数据源 无缝对接Ftp/Obs/Hbase/Kafka等多种数据源,仅需简单配置,无需编程。 一键化操作 一键申请集群、一键扩容、一键重启,从小规模测试到大规模上线,所有主要操作都是一键可达。 灵活词库管理 支持自定义词库与拼音分词,支持词库热更新,无需重启,配置即生效。 自定义快照策略 支持用户触发以及定时触发的快照备份能力,支持恢复到本集群以及其他集群的能力,随时恢复误删数据或者迁移数据到新的搜索集群。
  • 访问方式 公有云提供了Web化的服务管理平台,即管理控制台和基于HTTPS请求的API(Application programming interface)管理方式。 API方式 如果用户需要将公有云平台上的云搜索服务集成到第三方系统,用于二次开发,请使用API方式访问云搜索服务,具体操作请参见《云搜索服务API参考》。 控制台方式 其他相关操作,请使用管理控制台方式访问云搜索服务。如果用户已注册公有云,可直接登录管理控制台,在服务列表搜索“云搜索服务”。如果未注册,请单击右上方“注册”,根据界面提示填写用户基本信息,然后单击“同意协议并注册”完成管理控制台用户注册。
  • 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桶必须和集群所在“区域”相同。