华为云用户手册

  • 运行代码 根据集群类型将以上适配的代码写入到“EsTest.gc”文件并存放到一个单独的目录,在该目录执行以下命令运行代码。 go env -w GO111MODULE=on go env -w GOPROXY=https://repo.huaweicloud.com/repository/goproxy/ go env -w GONOSUMDB=* go mod init test go mod tidy go run EsTest.go
  • 连接非安全集群 连接非安全集群,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package main import ( "github.com/elastic/go-elasticsearch/v7" "log" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://HOST:9200/", }, } es, _ := elasticsearch.NewClient(cfg) log.Println(es.Info()) } 其中,HOST为集群节点的内网IP地址。
  • 连接安全集群 连接未开启https的安全集群,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package main import ( "github.com/elastic/go-elasticsearch/v7" "log" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "http://HOST:9200/", }, Username: "USERNAME", Password: "PASSWORD", } es, _ := elasticsearch.NewClient(cfg) log.Println(es.Info()) } 连接开启https的安全集群,不使用证书,示例代码如下: 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 package main import ( "crypto/tls" "github.com/elastic/go-elasticsearch/v7" "log" "net/http" ) func main() { cfg := elasticsearch.Config{ Addresses: []string{ "https://HOST:9200/", }, Username: "USERNAME", Password: "PASSWORD", Transport: &http.Transport{ TLSClientConfig: &tls.Config{ InsecureSkipVerify: true, }, }, } es, _ := elasticsearch.NewClient(cfg) log.Println(es.Info()) } 连接开启https的安全集群,使用证书,示例代码如下: 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 package main import ( "crypto/tls" "crypto/x509" "flag" "github.com/elastic/go-elasticsearch/v7" "io/ioutil" "log" "net" "net/http" "time" ) func main() { insecure := flag.Bool("insecure-ssl", false, "Accept/Ignore all server SSL certificates") flag.Parse() // Get the SystemCertPool, continue with an empty pool on error rootCAs, _ := x509.SystemCertPool() if rootCAs == nil { rootCAs = x509.NewCertPool() } // Read in the cert file certs, err := ioutil.ReadFile("/tmp/CloudSearchService.cer") if err != nil { log.Fatalf("Failed to append %q to RootCAs: %v", "xxx", err) } // Append our cert to the system pool if ok := rootCAs.AppendCertsFromPEM(certs); !ok { log.Println("No certs appended, using system certs only") } config := elasticsearch.Config{ Addresses: []string{ "https://HOST:9200/", }, Username: "USERNAME", Password: "PASSWORD", Transport: &http.Transport{ MaxIdleConnsPerHost: 10, ResponseHeaderTimeout: time.Second, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, }).DialContext, TLSClientConfig: &tls.Config{ InsecureSkipVerify: *insecure, RootCAs: rootCAs, }, }, } es, _ := elasticsearch.NewClient(config) log.Println(elasticsearch.Version) log.Println(es.Info()) } 表1 函数中的变量说明 参数 描述 HOST ES集群的访问地址,当存在多个IP地址时,中间用“,”隔开。 USERNAME 访问集群的用户名。 PASSWORD 用户名对应的密码。
  • 示例流程 图1 给用户授权 CSS 权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予 云搜索服务 只读权限“ CS S ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 将用户添加至用户组中,从而使用户拥有对应的CSS权限,一个用户组下面的用户具有相同的权限。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择 云搜索 服务CSS,进入CSS主界面,单击右上角“创建集群”,尝试购买CSS集群,如果无法购买CSS集群(假设当前权限仅包含CSS ReadOnlyAccess),表示“CSS ReadOnlyAccess”已生效。 在“服务列表”中选择除云搜索服务外(假设当前策略仅包含CSS ReadOnlyAccess)的任一服务,如果提示权限不足,表示“CSS ReadOnlyAccess”已生效。
  • CSS自定义策略样例 如果系统预置的CSS权限,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考权限策略和授权项。 目前华为云支持以下两种方式创建自定义策略: 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义策略。下面为您介绍常用的CSS自定义策略样例。 为了兼容开源生态,CSS服务的IAM权限和数据面集群权限分开控制,如果要开启数据面的安全能力,需要使用安全模式。 如果是子账号,需要同时设置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" } ] } 示例2:拒绝用户删除集群。 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。 如果您给用户授予CSS Admin的系统策略,但不希望用户拥有CSS admin中定义的删除云服务器权限,您可以创建一条拒绝删除云服务的自定义策略,然后同时将CSS Admin和拒绝策略授予用户,根据Deny优先原则,则用户可以对CSS执行除了删除集群外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "css:cluster:delete" ] } ] } 示例3:多个授权项策略。 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下: { "Version": "1.1", "Statement": [ { "Action": [ "ecs:cloudServers:resize", "ecs:cloudServers:delete", "ecs:cloudServers:delete", "css:cluster:restart", "css:*:get*", "css:*:list*" ], "Effect": "Allow" } ] }
  • 使用Spring Boot接入HTTPS集群(使用安全证书) 该场景适用于使用安全证书连接安全模式+HTTPS协议的集群。 获取安全证书(CloudSearchService.cer)。 登录云搜索服务控制台。 选择“集群管理”进入集群列表。 单击对应集群的名称,进入集群基本信息页面。 在“基本信息”页面,单击“HTTPS访问”后面的“下载证书”。 图1 下载证书 转换安全证书(CloudSearchService.cer)。将下载的安全证书上传到客户端机器上,使用keytool工具将“.cer”证书转换成Java可以读取的“.jks”证书格式。 在Linux系统中,执行如下命令转换证书。 keytool -import -alias newname -keystore ./truststore.jks -file ./CloudSearchService.cer 在Windows系统中,执行如下命令转换证书。 keytool -import -alias newname -keystore .\truststore.jks -file .\CloudSearchService.cer 其中,newname是由用户自定义的证书名称。 该命令执行后,会提示设置证书密码,并确认密码。请保存该密码,后续接入集群会使用。 application.properties配置文件: 1 2 3 elasticsearch.url=host1:9200,host2:9200 elasticsearch.username=username elasticsearch.password=password 表3 参数说明 参数 描述 host Elasticsearch集群的访问地址。 username 访问集群的用户名。 password 用户名对应的密码。 配置代码: com.xxx为项目目录,例如com.company.project。 com.xxx.repository为仓库目录,通过extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository进行具体定义。 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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 package com.xxx.configuration; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.KeyStore; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; @Configuration @EnableElasticsearchRepositories(basePackages = "com.xxx.repository") @ComponentScan(basePackages = "com.xxx") public class Config extends AbstractElasticsearchConfiguration { @Value("${elasticsearch.url}") public String elasticsearchUrl; @Value("${elasticsearch.username}") public String elasticsearchUsername; @Value("${elasticsearch.password}") public String elasticsearchPassword; @Override @Bean public RestHighLevelClient elasticsearchClient() { SSLContext sc = null; try { TrustManager[] tm = {new MyX509TrustManager(cerFilePath, cerPassword)}; sc = SSLContext.getInstance("SSL", "SunJSSE"); sc.init(null, tm, new SecureRandom()); } catch (Exception e) { e.printStackTrace(); } final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(StringHostParse(elasticsearchUrl)) .usingSsl(sc, new NullHostNameVerifier()) .withBasicAuth(elasticsearchUsername, elasticsearchPassword) .build(); return RestClients.create(clientConfiguration).rest(); } private String[] StringHostParse(String hostAndPorts) { return hostAndPorts.split(","); } public static class MyX509TrustManager implements X509TrustManager { X509TrustManager sunJSSEX509TrustManager; MyX509TrustManager(String cerFilePath, String cerPassword) throws Exception { File file = new File(cerFilePath); if (!file.isFile()) { throw new Exception("Wrong Certification Path"); } System.out.println("Loading KeyStore " + file + "..."); InputStream in = new FileInputStream(file); KeyStore ks = KeyStore.getInstance("JKS"); ks.load(in, cerPassword.toCharArray()); TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509", "SunJSSE"); tmf.init(ks); TrustManager[] tms = tmf.getTrustManagers(); for (TrustManager tm : tms) { if (tm instanceof X509TrustManager) { sunJSSEX509TrustManager = (X509TrustManager) tm; return; } } throw new Exception("Couldn't initialize"); } @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } public static class NullHostNameVerifier implements HostnameVerifier { @Override public boolean verify(String arg0, SSLSession arg1) { return true; } } } 其中,cerFilePath和cerPassword是生成的.jks证书的存放路径及其密码。
  • 使用Spring Boot接入HTTPS集群(不使用安全证书) 该场景适用于不使用安全证书连接安全模式+HTTPS协议的集群。 配置文件: 1 2 3 elasticsearch.url=host1:9200,host2:9200 elasticsearch.username=username elasticsearch.password=password 表2 参数说明 参数 描述 host Elasticsearch集群的访问地址。 username 访问集群的用户名。 password 用户名对应的密码。 配置代码: com.xxx为项目目录,例如com.company.project。 com.xxx.repository为仓库目录,通过extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository进行具体定义。 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 60 61 62 63 64 65 66 67 68 69 70 71 package com.xxx.configuration; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; @Configuration @EnableElasticsearchRepositories(basePackages = "com.xxx.repository") @ComponentScan(basePackages = "com.xxx") public class Config extends AbstractElasticsearchConfiguration { @Value("${elasticsearch.url}") public String elasticsearchUrl; @Value("${elasticsearch.username}") public String elasticsearchUsername; @Value("${elasticsearch.password}") public String elasticsearchPassword; @Override @Bean public RestHighLevelClient elasticsearchClient() { SSLContext sc = null; try { sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new SecureRandom()); } catch (KeyManagementException | NoSuchAlgorithmException e) { e.printStackTrace(); } final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(StringHostParse(elasticsearchUrl)) .usingSsl(sc, new NullHostNameVerifier()) .withBasicAuth(elasticsearchUsername, elasticsearchPassword) .build(); return RestClients.create(clientConfiguration).rest(); } private String[] StringHostParse(String hostAndPorts) { return hostAndPorts.split(","); } public static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } } }; public static class NullHostNameVerifier implements HostnameVerifier { @Override public boolean verify(String arg0, SSLSession arg1) { return true; } } }
  • 通过Spring Boot接入HTTP集群 该场景适用于连接非安全模式的集群或是安全模式+HTTP协议的集群。 配置文件: 1 2 3 4 elasticsearch.url=host1:9200,host2:9200 //非安全集群不用配置如下两行。 elasticsearch.username=username elasticsearch.password=password 表1 参数说明 参数 描述 host Elasticsearch集群的访问地址。 username 访问集群的用户名。 password 用户名对应的密码。 配置代码: com.xxx为项目目录,例如com.company.project。 com.xxx.repository为仓库目录,通过extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository进行具体定义。 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 package com.xxx.configuration; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; @Configuration @EnableElasticsearchRepositories(basePackages = "com.xxx.repository") @ComponentScan(basePackages = "com.xxx") public class Config extends AbstractElasticsearchConfiguration { @Value("${elasticsearch.url}") public String elasticsearchUrl; //非安全集群不用配置如下两个参数。 @Value("${elasticsearch.username}") public String elasticsearchUsername; @Value("${elasticsearch.password}") public String elasticsearchPassword; @Override @Bean public RestHighLevelClient elasticsearchClient() { final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(StringHostParse(elasticsearchUrl)) //非安全集群无需配置withBasicAuth。 .withBasicAuth(elasticsearchUsername, elasticsearchPassword) .build(); return RestClients.create(clientConfiguration).rest(); } private String[] StringHostParse(String hostAndPorts) { return hostAndPorts.split(","); } }
  • 注意事项 建议Elasticsearch Rest High Level Client的版本和Elasticsearch的版本保持一致,例如需要访问的Elasticsearch集群版本是7.10.2,则使用的Elasticsearch Rest High Level Client客户端版本建议也是7.10.2。 本章节以2.5.5版本Spring Boot为例介绍Spring Boot接入集群的方式,对应的spring data elasticsearch版本是4.2.x。
  • 约束限制 建议Rest High Level Client的版本和Elasticsearch的版本保持一致,例如需要访问的ES集群版本是7.6.2,则使用的Rest High Level Client客户端版本建议也是7.6.2。如果您使用相比Elasticsearch集群更高版本的Java Rest High Level Client且存在少量请求的兼容性问题,您可以使用“RestHighLevelClient.getLowLevelClient()”方式直接获取Low Level Client,实现自定义的Elasticsearch请求内容。
  • 通过自建Cerebro访问集群 使用自建Cerebro访问集群时,需要确保自建Cerebro与集群的网络是互通的。 获取集群的访问地址。不同网络配置的访问地址获取方式请参见网络配置。 启动自建Cerebro,填写集群的访问地址对接CSS集群。 安全模式的集群填写:https://访问地址:9200 安全模式的集群要输入集群的用户名和密码才能登录。 非安全模式的集群填写:http://访问地址:9200
  • SQL使用示例 在Kibana中使用SQL语言搜索数据(推荐) 在Kibana的DevTools中将请求发送到“_opendistro/_sqlURI”,可以使用请求参数或请求正文。 例如,执行如下命令,从“my-index”索引中搜索出50条数据。 1 2 3 4 POST _opendistro/_sql { "query": "SELECT * FROM my-index LIMIT 50" } 默认情况下,查询结果返回的是JSON格式的数据。当需要返回CSV格式的数据时,则需要在命令中对format参数进行如下设置: 1 2 3 4 POST _opendistro/_sql?format=csv { "query": "SELECT * FROM my-index LIMIT 50" } 查询结果返回CSV格式的数据时,每行对应一个文档,每列对应一个字段。 在ECS中使用Curl命令执行SQL搜索数据 例如,执行如下命令,从“kibana_sample_data_flights”索引中搜索出10条数据。 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' localhost表示集群的访问地址,username和password分别表示安全模式集群的用户名和密码。
  • 修改企业项目 针对之前已创建的集群,其绑定的企业项目可根据实际情况进行修改。 登录在云搜索服务管理控制台, 在左侧导航栏,选择对应的集群类型,进入集群管理页面。 在集群列表中,单击集群名称进入集群“基本信息”页面。 在集群“基本信息”页面,单击“企业项目”右侧的企业项目名称,进入项目管理页面。 在“资源”页签下,“区域”选项中选择当前集群所在的区域,“服务”选项中选“云搜索服务 CSS”。此时,资源列表将筛选出对应的CSS集群。 图1 筛选CSS集群 勾选需要修改企业项目的集群,然后单击“迁出”。 在“迁出资源”页面,选择“迁出方式”,再选择“请选择要迁入的企业项目”,然后单击“确定”。 迁出完成后,可以在云搜索服务管理控制台集群管理页面,查看修改后的集群企业项目信息。
  • 场景介绍 简繁体转换插件是一款可以使中文简体和中文繁体相互转换的插件。通过该插件的转换,用户可以使用中文繁体关键字搜索出包含对应中文简体的索引数据,也可以使用中文简体关键字搜索出包含对应中文繁体的索引数据。 云搜索服务默认安装了简繁体转换插件,用户无需自行安装。 简繁体转换插件通常可以当做analyzer、tokenizer、token-filter或char-filter来使用。 简繁体转换插件的转换类型包含如下两种: s2t:将中文简体转换为中文繁体。 t2s:将中文繁体转换为中文简体。
  • 操作步骤 登录云搜索服务管理控制台。 在左侧导航栏中,选择“集群管理”,进入集群列表页面。 在集群列表中,单击需要使用的集群对应“操作”列的“Kibana”。 如果开启了安全模式,需要输入创建集群时设置的管理员账户名和密码。 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。 在Console界面,执行如下命令,创建索引“stconvert”,并指定自定义映射来定义数据类型。 Elasticsearch低于7.x版本的代码示例 PUT /stconvert { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { "analyzer": { "ts_ik": { "tokenizer": "ik_smart", "char_filter": [ "tsconvert", "stconvert" ] } }, "char_filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s" }, "stconvert": { "type": "stconvert", "convert_type": "s2t" } } } }, "mappings": { "type": { "properties": { "desc": { "type": "text", "analyzer": "ts_ik" } } } } } Elasticsearch大于或等于7.x版本和OpenSearch集群的代码示例 PUT /stconvert { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { "analyzer": { "ts_ik": { "tokenizer": "ik_smart", "char_filter": [ "tsconvert", "stconvert" ] } }, "char_filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s" }, "stconvert": { "type": "stconvert", "convert_type": "s2t" } } } }, "mappings": { "properties": { "desc": { "type": "text", "analyzer": "ts_ik" } } } } 返回结果如下所示。 { "acknowledged" : true, "shards_acknowledged" : true, "index" : "stconvert" } 在Console界面,执行如下命令,导入数据到“stconvert”索引中。 Elasticsearch低于7.x版本的代码示例 POST /stconvert/type/1 { "desc": "國際電視臺" } Elasticsearch大于或等于7.x版本和OpenSearch集群的代码示例 POST /stconvert/_doc/1 { "desc": "國際電視臺" } 当返回结果信息中“failed”字段的值为“0”时,表示数据导入成功。 在Console界面,执行如下命令,搜索关键字“国际”,并查看搜索结果。 GET /stconvert/_search { "query": { "match": { "desc": "国际" } } } 搜索结果如下所示。 { "took" : 15, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.5753642, "hits" : [ { "_index" : "stconvert", "_type" : "type", "_id" : "1", "_score" : 0.5753642, "_source" : { "desc" : "國際電視臺" } } ] } }
  • 支持审计的关键操作列表 表1 支持审计的关键操作列表 操作名称 资源类型 事件名称 创建集群 cluster createCluster 删除集群 cluster deleteCluster 扩容集群 cluster roleExtendCluster 重启集群 cluster rebootCluster 配置自定义词库 cluster loadLexicon 删除自定义词库 cluster deleteLexicon 设置集群快照的基础配置 cluster updateSnapshotPolicy 设置自动创建快照策略 cluster updateAutoSnapshotPolicy 集群升级 cluster upgradeCluster 升级重试 cluster retryAction 手动创建快照 snapshot createSnapshot 恢复快照 snapshot restoreSnapshot 删除快照 snapshot deleteSnapshot
  • 支持审计的关键操作列表 表1 支持审计的关键操作列表 操作名称 资源类型 事件名称 创建集群 cluster createCluster 删除集群 cluster deleteCluster 扩容集群 cluster roleExtendCluster 重启集群 cluster rebootCluster 配置自定义词库 cluster loadLexicon 删除自定义词库 cluster deleteLexicon 设置集群快照的基础配置 cluster updateSnapshotPolicy 设置自动创建快照策略 cluster updateAutoSnapshotPolicy 集群升级 cluster upgradeCluster 升级重试 cluster retryAction 手动创建快照 snapshot createSnapshot 恢复快照 snapshot restoreSnapshot 删除快照 snapshot deleteSnapshot
  • 前提条件 为方便操作,建议采用Linux操作系统的机器部署Logstash。 Logstash的下载路径为:https://www.elastic.co/cn/downloads/logstash-oss Logstash要求使用OSS版本,选择和CSS一致版本。 安装Logstash之前,需要先安装JDK。在Linux操作系统中,您可以执行yum -y install java-1.8.0命令直接安装1.8.0版本JDK。在Windows操作系统中,您可以访问JDK官网,下载符合操作系统版本的JDK,并根据指导安装。 安装完Logstash后,再根据如下步骤导入数据。安装Logstash的操作指导,请参见:https://www.elastic.co/guide/en/logstash/current/installing-logstash.html 在“Logstash部署在弹性云服务器上时导入数据”场景中,请确保此弹性云服务器与接入的Elasticsearch集群在同一个VPC下。
  • 节点监控指标列表 监控的指标ID、指标名称、指标含义以及取值范围参见表2。 监控的测量对象:CSS集群 - 云服务节点 监控的监控周期(原始指标):1分钟 累计值:从节点启动时开始叠加数值,当节点重启后清零重新累计。 表2 云搜索服务节点支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) jvm_heap_usage JVM堆使用率 节点JVM堆内存使用率。 单位:百分比 0-100% CSS集群 - 云服务节点 1分钟 cpu_usage CPU利用率 CPU利用率。 单位:百分比 0-100% CSS集群 - 云服务节点 1分钟 load_average 节点Load值 操作系统中1分钟平均排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 open_file_descriptors 已打开的文件描述符数 节点已打开的文件描述符数。 ≥ 0 CSS集群 - 云服务节点 1分钟 max_file_descriptors 最大允许的文件描述符数 最大允许的文件描述符数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_write_queue Write队列中总排队任务数 写入线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_search_queue Search队列中总排队任务数 搜索线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_force_merge_queue ForceMerge队列中总排队任务数 强制合并线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_write_rejected Write队列中总的已拒绝任务数 写入线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_search_rejected Search队列中总的已拒绝任务数 搜索线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_force_merge_rejected ForceMerge队列中总的已拒绝任务数 强制合并线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_write_threads Write线程池总大小 写入线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_search_threads Search线程池总大小 搜索线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_force_merge_threads ForceMerge线程池总大小 强制合并线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_flush_queue Flush队列中总排队任务数 Flush线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_flush_rejected Flush队列中总的已拒绝任务数 Flush线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_flush_threads Flush线程池总大小 Flush线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_generic_queue Generic队列中总排队任务数 Generic线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_generic_rejected Generic队列中总的已拒绝任务数 Generic线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_generic_threads Generic线程池总大小 Generic线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_management_queue Management队列中总排队任务数 Management线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_management_rejected Management队列中总的已拒绝任务数 Management线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_management_threads Management线程池总大小 Management线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_refresh_queue Refresh队列中总排队任务数 Refresh线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_refresh_rejected Refresh队列中总的已拒绝任务数 Refresh线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_refresh_threads Refresh线程池总大小 Refresh线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_searcher_queue OBS Searcher队列中总排队任务数 OBS Searcher线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_searcher_rejected OBS Searcher队列中总的已拒绝任务数 OBS Searcher线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_searcher_threads OBS Searcher线程池总大小 OBS Searcher线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_queue OBS队列中总排队任务数 OBS线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_rejected OBS队列中总的已拒绝任务数 OBS线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_threads OBS线程池总大小 OBS线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_upload_queue OBS Upload队列中总排队任务数 OBS Upload线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_upload_rejected OBS Upload队列中总的已拒绝任务数 OBS Upload线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_upload_threads OBS Upload线程池总大小 OBS Upload线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_download_queue OBS Download队列中总排队任务数 OBS Download线程池中的排队任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_download_rejected OBS Download队列中总的已拒绝任务数 OBS Download线程池中的已拒绝任务数。 ≥ 0 CSS集群 - 云服务节点 1分钟 thread_pool_obs_download_threads OBS Download线程池总大小 OBS Download线程池的大小。 ≥ 0 CSS集群 - 云服务节点 1分钟 free_fs_size 文件系统可用大小 CSS集群的文件系统可用大小。 单位:byte ≥ 0 bytes CSS集群 - 云服务节点 1分钟 total_fs_size 文件系统总大小 CSS集群的文件系统总大小。 单位:byte ≥ 0 bytes CSS集群 - 云服务节点 1分钟 jvm_old_gc_count JVM老年代总GC次数 “老年代”垃圾回收的运行次数。 ≥ 0 CSS集群 - 云服务节点 1分钟 jvm_old_gc_time JVM老年代总GC时间 执行“老年代”垃圾回收所花费的时间。 单位:ms ≥ 0 ms CSS集群 - 云服务节点 1分钟 jvm_young_gc_count JVM年轻代总GC次数 “年轻代”垃圾回收的运行次数。 ≥ 0 CSS集群 - 云服务节点 1分钟 jvm_young_gc_time JVM年轻代GC时间 执行“年轻代”垃圾回收所花费的时间。 单位:ms ≥ 0 ms CSS集群 - 云服务节点 1分钟 mem_free_in_bytes 可用内存空间 节点未使用的内存容量。 单位:byte ≥ 0 bytes CSS集群 - 云服务节点 1分钟 mem_free_percent 可用内存比例 节点未使用的内存比例。 ≥ 0 CSS集群 - 云服务节点 1分钟 mem_used_in_bytes 已用内存空间 节点已使用的内存容量。 单位:byte ≥ 0 bytes CSS集群 - 云服务节点 1分钟 current_opened_http_count 当前已打开HTTP连接数 节点当前打开的HTTP连接数。 ≥ 0 CSS集群 - 云服务节点 1分钟 total_opened_http_count 全部打开的HTTP连接数 节点全部打开的HTTP连接数。 ≥ 0 CSS集群 - 云服务节点 1分钟
  • 集群监控指标列表 监控的指标ID、指标名称、指标含义以及取值范围参见表1。 监控的测量对象:CSS集群(本文介绍的是Elasticsearch集群和OpenSearch集群的监控指标列表) 监控的监控周期(原始指标):1分钟 累计值:从节点启动时开始叠加数值,当节点重启后清零重新累计。 表1 云搜索服务支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) status 集群健康状态 该指标用于统计测量监控对象的状态。 0,1,2,3 0:集群是100%可用的。 1:数据是完整的,部分副本缺失。高可用性在某种程度上弱化,存在风险,请及时关注集群情况。 2:数据缺失,集群使用时将出现异常。 3:没有获取到集群状态。 CSS集群 1分钟 disk_util 磁盘使用率 该指标用于统计测量对象的磁盘使用率。 单位:百分比 0-100% CSS集群 1分钟 max_jvm_heap_usage 最大JVM堆使用率 CSS集群中各个节点的JVM堆使用率的最大值。 单位:百分比。 0-100% CSS集群 1分钟 max_jvm_young_gc_time 最大JVM Young GC耗时 CSS集群中各个节点的JVM Young GC耗时累计值的最大值。 单位:ms ≥ 0 ms CSS集群 1分钟 max_jvm_young_gc_count 最大JVM Young GC次数 CSS集群中各个节点的JVM Young GC次数累计值的最大值。 ≥ 0 CSS集群 1分钟 max_jvm_old_gc_time 最大JVM Old GC耗时 CSS集群中各个节点的JVM Old GC耗时累计值的最大值。 单位:ms ≥ 0 ms CSS集群 1分钟 max_jvm_old_gc_count 最大JVM Old GC次数 CSS集群中各个节点的JVM Old GC次数累计值的最大值。 ≥ 0 CSS集群 1分钟 total_fs_size 文件系统总大小 CSS集群的文件系统总大小。 单位:byte ≥ 0 bytes CSS集群 1分钟 free_fs_size 文件系统可用大小 CSS集群的文件系统可用大小。 单位:byte ≥ 0 bytes CSS集群 1分钟 max_cpu_usage 最大CPU利用率 CSS集群中各个节点的CPU利用率的最大值。 单位:百分比 0-100% CSS集群 1分钟 max_cpu_time_of_jvm_process 最大JVM进程使用的CPU时间 CSS集群中各个节点JVM进程使用CPU的时间累计值的最大值。 单位:ms ≥ 0 ms CSS集群 1分钟 max_virtual_memory_size_of_jvm_process 最大JVM进程使用的虚拟内存大小 CSS集群中各个节点JVM进程可使用的虚拟内存大小的最大值。 单位:byte ≥ 0 bytes CSS集群 1分钟 max_current_opened_http_count 最大当前打开的HTTP连接数 CSS集群中各个节点打开且尚未关闭的HTTP连接数的最大值。 ≥ 0 CSS集群 1分钟 max_total_opened_http_count 最大全部打开的HTTP连接数 CSS集群中各个节点打开过的HTTP连接数累计值的最大值。 ≥ 0 CSS集群 1分钟 indices_count 索引数量 CSS集群的索引数量。 ≥ 0 CSS集群 1分钟 total_shards_count 分片数量 CSS集群的分片数量。 ≥ 0 CSS集群 1分钟 primary_shards_count 主分片数量 CSS集群的主分片数量。 ≥ 0 CSS集群 1分钟 docs_count 文档数量 CSS集群的文档数量。 ≥ 0 CSS集群 1分钟 docs_deleted_count 被删除的文档数量 CSS集群的被删除的文档数量。 ≥ 0 CSS集群 1分钟 nodes_count 节点数量 CSS集群的节点数量。 ≥ 0 CSS集群 1分钟 data_nodes_count 数据节点数量 CSS集群的数据节点数量。 ≥ 0 CSS集群 1分钟 coordinating_nodes_count 协调节点数量 CSS集群的协调节点数量。 ≥ 0 CSS集群 1分钟 master_nodes_count Master节点数量 CSS集群的Master节点数量。 ≥ 0 CSS集群 1分钟 ingest_nodes_count Client节点数量 CSS集群的Client节点数量。 ≥ 0 CSS集群 1分钟 max_load_average 最大节点Load值 CSS集群中各个节点在操作系统中1分钟平均排队任务数的最大值。 ≥ 0 CSS集群 1分钟 avg_cpu_usage 平均CPU使用率 CSS集群中各节点CPU利用率的平均值。 单位:百分比 0-100% CSS集群 1分钟 avg_load_average 平均节点Load值 CSS集群中各节点在操作系统中1分钟平均排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_jvm_heap_usage 平均JVM堆使用率 CSS集群中各节点JVM堆内存使用率的平均值。 单位:百分比 0-100% CSS集群 1分钟 max_open_file_descriptors 已打开的最大文件描述符数 CSS集群中各个节点已打开的文件描述符数的最大值。 ≥ 0 CSS集群 1分钟 avg_open_file_descriptors 已打开的平均文件描述符数 CSS集群中各节点已打开的文件描述符数的平均值。 ≥ 0 CSS集群 1分钟 sum_max_file_descriptors 最大允许的文件描述符数 CSS集群中各节点最大允许的文件描述符数之和。 ≥ 0 CSS集群 1分钟 sum_open_file_descriptors 已打开的文件描述符数 CSS集群中各节点已打开的文件描述符数之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_write_queue Write队列中总排队任务数 写入线程池中的排队任务数。 ≥ 0 CSS集群 1分钟 sum_thread_pool_search_queue Search队列中总排队任务数 CSS集群中各节点在搜索线程池中的排队任务数之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_force_merge_queue ForceMerge队列中总排队任务数 CSS集群中各节点在强制合并线程池中的排队任务数之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_write_rejected Write队列中总的已拒绝任务数 CSS集群中各节点在写入线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_search_rejected Search队列中总的已拒绝任务数 CSS集群中各节点在搜索线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_force_merge_rejected Forcemerge队列中总的已拒绝任务数 CSS集群中各节点在强制合并线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_search_queue Search队列中最大排队任务数 CSS集群中各个节点在搜索线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 max_thread_pool_force_merge_queue ForceMerge队列中最大排队任务数 CSS集群中各个节点在强制合并线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_write_threads Write线程池总大小 CSS集群中各节点写入线程池的大小之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_search_threads Search线程池总大小 CSS集群中各节点搜索线程池的大小之和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_force_merge_threads ForceMerge线程池总大小 CSS集群中各节点强制合并线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_write_queue Write队列中平均排队任务数 CSS集群中各节点在写入线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_search_queue Search队列中平均排队任务数 CSS集群中各节点在搜索线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_force_merge_queue ForceMerge队列中平均排队任务数 CSS集群中各节点在强制合并线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_search_threads Search线程池平均大小 CSS集群中各节点搜索线程池的大小的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_write_threads Write线程池平均大小 CSS集群中各节点写入线程池的大小的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_force_merge_threads ForceMerge线程池平均大小 CSS集群中各节点强制合并线程池的大小的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_write_rejected Write队列中平均已拒绝任务数 CSS集群中各节点写入线程池中的已拒绝任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_flush_queue Flush队列中总排队任务数 CSS集群中各个节点在Flush线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_flush_rejected Flush队列中总的已拒绝任务数 CSS集群中各节点在Flush线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_flush_queue Flush队列中最大排队任务数 CSS集群中各个节点在Flush线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_flush_threads Flush线程池总大小 CSS集群中各节点Flush线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_flush_queue Flush队列中平均排队任务数 CSS集群中各节点在Flush线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_flush_threads Flush线程池平均大小 CSS集群中各节点在Flush线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_generic_queue Generic队列中总排队任务数 CSS集群中各个节点在Generic线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_generic_rejecte Generic队列中总的已拒绝任务数 CSS集群中各节点在Generic线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_generic_queue Generic队列中最大排队任务数 CSS集群中各个节点在Generic线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_generic_threads Generic线程池总大小 CSS集群中各节点Generic线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_generic_queue Generic队列中平均排队任务数 CSS集群中各节点在Generic线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_generic_threads Generic线程池平均大小 CSS集群中各节点在Generic线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_management_queue Management队列中总排队任务数 CSS集群中各个节点在Management线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_management_rejected Management队列中总的已拒绝任务数 CSS集群中各节点在Management线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_management_queue Management队列中最大排队任务数 CSS集群中各个节点在Management线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_management_threads Management线程池总大小 CSS集群中各节点Management线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_management_queue Management队列中平均排队任务数 CSS集群中各节点在Management线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_management_threads Management线程池平均大小 CSS集群中各节点在Management线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_refresh_queue Refresh队列中总排队任务数 CSS集群中各个节点在Refresh线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_refresh_rejected Refresh队列中总的已拒绝任务数 CSS集群中各节点在Refresh线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_refresh_queue Refresh队列中最大排队任务数 CSS集群中各个节点在Refresh线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_refresh_threads Refresh线程池总大小 CSS集群中各节点Refresh线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_refresh_queue Refresh队列中平均排队任务数 CSS集群中各节点在Refresh线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_refresh_threads Refresh线程池平均大小 CSS集群中各节点在Refresh线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_searcher_queue OBS Searcher队列中总排队任务数 CSS集群中各个节点在OBS Searcher线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_searcher_rejected OBS Searcher队列中总的已拒绝任务数 CSS集群中各节点在OBS Searcher线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_obs_searcher_queue OBS Searcher队列中最大排队任务数 CSS集群中各个节点在OBS Searcher线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_searcher_threads OBS Searcher线程池总大小 CSS集群中各节点OBS Searcher线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_searcher_queue OBS Searcher队列中平均排队任务数 CSS集群中各节点在OBS Searcher线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_searcher_threads OBS Searcher线程池平均大小 CSS集群中各节点在OBS Searcher线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_queue OBS队列中总排队任务数 CSS集群中各个节点在OBS线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_rejected OBS队列中总的已拒绝任务数 CSS集群中各节点在OBS线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_obs_queue OBS队列中最大排队任务数 CSS集群中各个节点在OBS线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_threads OBS线程池总大小 CSS集群中各节点OBS线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_queue OBS队列中平均排队任务数 CSS集群中各节点在OBS线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_threads OBS线程池平均大小 CSS集群中各节点在OBS线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_upload_queue OBS Upload队列中总排队任务数 CSS集群中各个节点在OBS Upload线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_upload_rejected OBS Upload队列中总的已拒绝任务数 CSS集群中各节点在OBS Upload线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_obs_upload_queue OBS Upload队列中最大排队任务数 CSS集群中各个节点在OBS Upload线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_upload_threads OBS Upload线程池总大小 CSS集群中各节点OBS Upload线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_upload_queue OBS Upload队列中平均排队任务数 CSS集群中各节点在OBS Upload线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_upload_threads OBS Upload线程池平均大小 CSS集群中各节点在OBS Upload线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_download_queue OBS Download队列中总排队任务数 CSS集群中各个节点在OBS Download线程池中的排队任务数只和。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_download_rejected OBS Download队列中总的已拒绝任务数 CSS集群中各节点在OBS Download线程池中的已拒绝任务数之和。 ≥ 0 CSS集群 1分钟 max_thread_pool_obs_download_queue OBS Download队列中最大排队任务数 CSS集群中各个节点在OBS Download线程池中的排队任务数的最大值。 ≥ 0 CSS集群 1分钟 sum_thread_pool_obs_download_threads OBS Download线程池总大小 CSS集群中各节点OBS Download线程池的大小之和。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_download_queue OBS Download队列中平均排队任务数 CSS集群中各节点在OBS Download线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 avg_thread_pool_obs_download_threads OBS Download线程池平均大小 CSS集群中各节点在OBS Download线程池中的排队任务数的平均值。 ≥ 0 CSS集群 1分钟 min_free_fs_size 最小可用存储空间 CSS集群中各个节点可用存储空间的最小值。 单位:byte ≥ 0 bytes CSS集群 1分钟 avg_jvm_old_gc_count JVM老年代平均GC次数 CSS集群中各个节点“老年代”垃圾回收的运行次数的累计值的平均值。 ≥ 0 CSS集群 1分钟 avg_jvm_old_gc_time JVM老年代平均GC时间 CSS集群中各个节点执行“老年代”垃圾回收所花费的时间累计值的平均值。 单位:ms ≥ 0 ms CSS集群 1分钟 avg_jvm_young_gc_count JVM年轻代平均GC次数 CSS集群中各个节点“年轻代”垃圾回收的运行次数的累计值的平均值。 ≥ 0 CSS集群 1分钟 avg_jvm_young_gc_time JVM年轻代平均GC时间 CSS集群中各个节点执行“年轻代”垃圾回收所花费的时间累计值的平均值。 单位:ms ≥ 0 ms CSS集群 1分钟 avg_max_file_descriptors 最大允许的文件描述符数-平均值 CSS集群中各节点最大允许的文件描述符数的平均值。 ≥ 0 CSS集群 1分钟 avg_mem_free_in_bytes 平均可用内存空间 CSS集群中各节点未使用的内存容量的平均值。 单位:byte ≥ 0 bytes CSS集群 1分钟 avg_mem_free_percent 平均可用内存比例 CSS集群中各节点未使用的内存比例的平均值。 单位:百分比 0-100% CSS集群 1分钟 avg_mem_used_in_bytes 平均已用内存空间 CSS集群中各节点已使用的内存容量的平均值。 单位:byte ≥ 0 bytes CSS集群 1分钟 avg_mem_used_percent 平均已用内存比例 CSS集群中各节点已使用的内存比例的平均值。 单位:百分比 0-100% CSS集群 1分钟 max_mem_free_in_bytes 最大可用内存空间 CSS集群中各个节点未使用的内存容量的最大值。 单位:byte ≥ 0 bytes CSS集群 1分钟 max_mem_free_percent 最大可用内存比例 CSS集群中各个节点未使用的内存比例的最大值。 单位:百分比 0-100% CSS集群 1分钟 max_mem_used_in_bytes 最大已用内存空间 CSS集群中各个节点已使用的内存容量的最大值。 单位:byte ≥ 0 bytes CSS集群 1分钟 max_mem_used_percent 最大已用内存比例 CSS集群中各个节点已使用的内存比例的最大值。 单位:百分比 0-100% CSS集群 1分钟 sum_jvm_old_gc_count JVM老年代总GC次数 CSS集群中各个节点“老年代”垃圾回收的运行次数的累计值之和。 ≥ 0 CSS集群 1分钟 sum_jvm_old_gc_time JVM老年代总GC时间 CSS集群中各个节点执行“老年代”垃圾回收所花费的时间累计值之和。 单位:ms ≥ 0ms CSS集群 1分钟 sum_jvm_young_gc_count JVM年轻代总GC次数 CSS集群中各个节点“年轻代”垃圾回收的运行次数的累计值之和。 ≥ 0 CSS集群 1分钟 sum_jvm_young_gc_time JVM年轻代总GC时间 CSS集群中各个节点执行“年轻代”垃圾回收所花费的时间累计值之和。 单位:ms ≥ 0 ms CSS集群 1分钟 sum_current_opened_http_count 当前已打开HTTP连接数 CSS集群中各个节点打开且尚未关闭的HTTP连接数之和。 ≥ 0 CSS集群 1分钟 sum_total_opened_http_count 历史已打开HTTP连接数 CSS集群中各个节点打开过的HTTP连接数累计值之和。 ≥ 0 CSS集群 1分钟 IndexingLatency 平均索引延迟 分片完成索引操作所需的平均时间。 单位:ms ≥ 0 ms CSS集群 1分钟 IndexingRate 平均索引速率 入库TPS,集群每秒平均索引操作数。 ≥ 0 CSS集群 1分钟 SearchLatency 平均查询延迟 分片完成搜索操作所需的平均时间。 单位:ms。 ≥ 0 ms CSS集群 1分钟 SearchRate 平均查询速率 查询QPS,集群每秒平均查询操作数。 ≥ 0 CSS集群 1分钟 task_max_running_time 最大Task运行时长 该指标为集群运行的所有task中,运行时长最长的task的耗时 ≥ 0 ms CSS集群 1分钟 number_of_pending_tasks Pending Task排队任务数 CSS集群中待Master处理的task的排队任务数。 ≥ 0 CSS集群 1分钟
  • 配置自定义词库 登录云搜索服务管理控制台。 在左侧导航栏,选择对应的集群类型,进入集群列表页面。 在“集群管理”页面,单击需要配置自定义词库的集群名称,进入集群基本信息页面。 选择“自定义词库”。 在“自定义词库”页面,配置集群的自定义词库或修改预置词库。 当需要配置用户自定义的词库时,参考表1完成配置。 表1 配置自定义词库 参数 说明 OBS桶 选择词库文件存储的OBS位置。 单击“创建桶”可以跳转到创建桶页面新建OBS桶,新建OBS桶必须和集群在相同“区域”,且“默认存储类别”只支持“标准存储”或“低频访问存储”。 主词词库 主词词库是用户自定义的词库,初始状态为空。默认选择“不更新”表示不配置该词库。 当需要添加自定义的主词词库时,单击“更新”,选择txt格式的词库文件。 当无需添加自定义的主词词库时,单击“不使用此词库”,删除词库。 停词词库 停词词库是用户自定义的词库,初始状态为空。默认选择“不更新”表示不配置该词库。 当需要添加自定义的停词词库时,单击“更新”,选择txt格式的词库文件。 当无需添加自定义的停词词库时,单击“不使用此词库”,删除词库。 同义词词库 同义词词库是用户自定义的词库,初始状态为空。默认选择“不更新”表示不配置该词库。 当需要添加自定义的同义词词库时,单击“更新”,选择txt格式的词库文件。 当无需添加自定义的同义词词库时,单击“不使用此词库”,删除词库。 当需要修改预置词库时,单击打开“修改预置词库”右侧的开关,修改对应的预置词库。 如果界面不存在静态词库和Extra词库这4个词库时,表示该集群版本不支持删除或修改这4个预置词库。如果想要使用该功能,建议升级集群版本,或者新建集群并进行数据迁移。 表2 配置预置词库 参数 说明 静态主词词库 静态主词词库是预置的常用词语的主词库。默认选择“不更新”表示使用该预置词库。 当需要修改预置的静态主词词库时,单击“更新”,选择txt格式的词库文件。 当不使用静态主词库时,单击“不使用此词库”,删除词库。 静态停词词库 静态停词词库是预置的常用词语的停词库。默认选择“不更新”表示使用该预置词库。 当需要修改预置的静态停词词库时,单击“更新”,选择txt格式的词库文件。 当不使用静态停词库时,单击“不使用此词库”,删除词库。 Extra主词词库 Extra主词词库是预置的生僻词语的主词库。默认选择“不更新”表示使用该预置词库。 当需要修改预置的Extra主词词库时,单击“更新”,选择txt格式的词库文件。 当不使用Extra主词库时,单击“不使用此词库”,删除词库。 Extra停词词库 Extra停词词库是预置的生僻词语的Extra停词库。默认选择“不更新”表示使用该预置词库。 当需要修改预置的Extra停词词库时,单击“更新”,选择txt格式的词库文件。 当不使用Extra停词库时,单击“不使用此词库”,删除词库。 单击“保存”,在弹窗中单击“确定”。词库信息在下方呈现,此时词库状态为“更新中”。请耐心等待1分钟左右,当词库配置完成后,词库状态变更为“成功”。 当删除或更新静态词库和Extra词库这4个词库时,需要重启集群才能使配置的词库生效;其他词库的更新为动态更新,无需重启集群。重启集群的操作指导请参见重启Elasticsearch集群。
  • 背景信息 云搜索服务的词库用于对文本进行分词,使得一些特殊词语在分词的时候能够被识别出来,便于根据关键词搜索文本数据。例如,根据公司名称来查询,如“华为”;或者根据网络流行词来查询,如“喜大普奔”。也支持基于同义词词库,根据同义词搜索文本数据。 CSS服务使用的分词器包括IK分词器和同义词分词器。IK分词器配备主词词库和停词词库;同义词分词器配备同义词词库。其中,IK分词器包含ik_max_word和ik_smart分词策略。同义词分词器使用的是ik_synonym分词策略。 ik_max_word:会将文本做最细粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,昨夜,西风,吹折千林梢,吹折,千林梢,千,林,折千林,千林,吹”,会穷尽各种可能的分词组合。 ik_smart:会做最粗粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,吹折千林梢”。 CSS服务给集群预置了静态主词词库、静态停词词库、Extra主词词库和Extra停词词库这四个词库。 当这些预置词库已满足集群业务的分词需求时,则集群无需配置自定义词库即可直接实现关键词搜索。 当预置词库不满足集群业务分词需求时,可以给集群添加主词词库、停词词库或同义词词库,亦或者是修改预置的四个词库,使集群能够实现关键词或同义词搜索。 CSS服务的各类词库介绍请参见表1。 表1 词库介绍 词库类型 说明 文件要求 自定义 主词词库 主词为用户希望进行分词的特殊词语,例如“智能手机”和“喜大普奔”。主词词库则是用户自定义的特殊词语的集合。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一个分词,主词文件最大支持100M。如果涉及单词,必须改成小写字母。 停词词库 停词为用户不希望进行分词或者关注的词语,例如“的”、“什么”、“怎么”等。停词词库是用户自定义的停词词语的集合。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一个分词,停词文件最大支持100M。 同义词词库 同义词为意义相同的一组词语,例如“开心”和“高兴”。同义词词库是用户自定义的同义词词语的集合。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一组同义词对,同义词对中的同义词间逗号隔开,同义词文件最大支持100MB。 预置 静态主词词库 静态主词词库是CSS服务预置的常用主词集合,当需要查看静态主词词库时,可以单击地址https://github.com/infinilabs/analysis-ik/blob/master/config/main.dic获取词库。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一个分词,静态主词文件最大支持100M。 静态停词词库 静态停词词库是CSS服务预置的常用停词集合,当需要查看静态停词词库时,可以单击地址https://github.com/infinilabs/analysis-ik/blob/master/config/stopword.dic获取词库。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一个分词,静态停词文件最大支持100M。 Extra主词词库 Extra主词词库是CSS服务预置的生僻主词集合,当需要查看Extra主词词库时,可以单击地址https://github.com/infinilabs/analysis-ik/blob/master/config/extra_main.dic获取词库。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一个分词,Extra主词文件最大支持100M。 Extra停词词库 Extra停词词库是CSS服务预置的生僻停词集合,当需要查看Extra停词词库时,可以单击地址https://github.com/infinilabs/analysis-ik/blob/master/config/extra_stopword.dic获取词库。 词库文件必须是UTF-8无BOM格式编码的文本文件,一行一个分词,Extra停词文件最大支持100M。
  • 通过自建Cerebro访问集群 使用自建Cerebro访问集群时,需要确保自建Cerebro与集群的网络是互通的。 获取集群的访问地址。不同网络配置的访问地址获取方式请参见网络配置。 启动自建Cerebro,填写集群的访问地址对接CSS集群。 安全模式的集群填写:https://访问地址:9200 安全模式的集群要输入集群的用户名和密码才能登录。 非安全模式的集群填写:http://访问地址:9200
  • 规划集群安全模式 表8 集群类型介绍 集群类型 集群描述 适用场景 非安全集群 非安全模式的集群 非安全模式的集群无需安全认证即可访问,采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 适合内网业务,用于测试场景。 优点:简单,接入集群容易。 缺点:安全性差,任何人都可以访问集群。 安全集群 安全模式+HTTP协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 可以实现用户权限隔离,适用于对集群性能敏感的场景。 优点:访问集群需要安全认证,提升了集群安全性。通过HTTP协议访问集群又能保留集群的高性能。 缺点:无法公网访问集群。 安全模式+HTTPS协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTPS协议进行通信加密,使数据更安全。 有非常高的安全要求,且需要公网访问集群的场景。 优点:访问集群需要安全认证,提升了集群安全性,且HTTPS协议的通讯加密可以实现集群公网访问功能。 缺点:通过HTTPS协议访问集群,集群的读取性能相对HTTP协议来说,会下降20%左右。 当访问安全模式的集群时,需要输入用户名和密码通过安全认证才能访问。CSS服务支持以下两类用户的安全认证: 集群的管理员:管理员账户名默认为admin,密码为创建集群时设置的管理员密码。 集群的用户:集群的管理员通过Kibana创建集群的用户和密码。创建方式请参见使用OpenSearch Dashboard创建用户并授权。 当集群创建完成后,支持切换安全模式,具体操作请参见更改OpenSearch集群安全模式。 切换安全模式包含三大场景:非安全模式切换为安全模式、安全模式切换为非安全模式、安全模式的协议切换。
  • 规划索引分片数 在使用集群的过程时,特别是在进行数据导入操作之前,建议根据具体的业务需求,提前对集群的数据结构和分布进行规划。这包括合理设计索引和确定分片数量。为了确保集群在性能和可扩展性方面达到最佳状态,以下是一些建议。 单个分片大小:建议将每个分片的大小控制在10GB到50GB之间。这有助于在存储效率和查询性能之间取得平衡。 集群总分片数量:为了管理方便和避免过度扩展,建议将集群的总分片数量控制在3万以内。这有助于保持集群的稳定性和响应速度。 内存与分片比例:在资源分配上,建议每1GB的内存空间放置20到30个分片。这样可以确保每个分片都有足够的内存资源进行索引和查询操作。 单节点分片数:为了避免单点过载,建议每个节点上的分片数量不超过1000个。这有助于避免节点资源竞争,确保节点的稳定运行。 索引分片与节点数的关系:对于单个索引,建议其分片数与集群的节点数保持一致,或者设置为节点数的整数倍。这有助于实现负载均衡,优化查询和索引的性能。 通过以上建议,可以更有效地规划和管理CSS集群的索引分片,从而提升集群的整体性能和可维护性。
  • 规划节点数量 创建集群时,集群的节点数量应当基于业务性能需求和预期负载进行规划。表5提供了计算方式用以确定合适的节点数量。通过这个计算方式可以更科学地规划集群的节点数量,以满足业务需求并保证集群的性能和稳定性。 表5 节点数量的计算方式 节点 性能基线 节点数量计算方式 示例 写入节点 对于挂载云盘的节点,其单核写入性能基线为1MB/s。 对于超高IO型的节点,其单核写入性能基线为1.5MB/s。 写入节点数=业务峰值时的流量÷单节点的核数÷单核写入性能基线x副本数 业务峰值写入100MB/s,使用16u64g的节点,预计需要100÷16÷1x2=12个节点。 查询节点 相同节点,不同业务场景下的性能差异非常大,单节点的性能基线难以评估。这里以业务平均查询响应时间(单位为秒)作为查询的性能基线进行测算。 查询节点数=QPS÷(单节点的核数x3÷2÷平均查询响应时间)x分片数量 查询QPS要求1000,平均查询响应时间100ms,索引规划3个分片,使用16u64g的节点,预计需要1000÷(16x3÷2÷0.1)x3=12个节点。 总节点数量 不涉及 总节点数量=写入节点数+查询节点数 总节点数=写入节点数+查询节点数=24个节点数。 说明: 这里计算的总节点数量表示数据节点和冷数据节点的数量之和。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,设置节点数量时可以参考表6。 表6 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 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:冷数据节点。
  • 规划虚拟私有云和子网 CSS服务支持在非共享VPC和共享VPC内创建集群。 共享VPC和非共享VPC相比,有如下优势: 在一个账号内统一创建资源,并将资源共享给其他账号,其他账号无需创建重复资源,可以精简资源数量以及网络架构,提升管理效率并节约成本。 比如不同账号下的VPC网络互通需要建立对等连接,使用共享VPC后,则不同账号用户可以在同一个VPC创建资源,免去了对等连接配置,有效的简化组网结构。 在一个账号内统一管理运维资源,便于企业集中配置业务安全策略,并且利于对资源使用情况的监控和审计,支撑业务的安全诉求。 当选择使用共享VPC创建集群时,需要提前完成共享VPC子网的创建,操作流程请参见表7。有关共享VPC的使用限制及详细操作指导等信息可以参考共享VPC概述。 表7 共享子网创建流程说明 方法 说明 操作指导 方法A 通过 RAM 管理控制台,所有者创建共享,将子网共享给使用者。配置如下: 选择共享子网。 为共享子网选择权限,即指定使用者对该共享子网具备的权限。 CSS服务在共享VPC中创建集群需要选择权限:default vpc subnet statement。 指定共享子网的使用者,可以指定多个。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,子网共享成功。 如果后续使用者不再需要使用该共享子网,可以退出该共享。 使用者拒绝共享申请,子网共享失败。 创建共享 接受/拒绝共享邀请 退出共享 方法B 通过RAM管理控制台,所有者创建共享,将子网共享给使用者。配置如下: 选择共享子网。 为共享子网选择权限,即指定使用者对该共享子网具备的权限。 CSS服务在共享VPC中创建集群需要选择权限:default vpc subnet statement。 指定共享子网的使用者,可以指定多个。 通过VPC管理控制台,选择上一步中已创建的共享,将子网加入到该共享内。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,子网共享成功。 如果后续使用者不再需要使用该共享子网,可以退出该共享。 使用者拒绝共享申请,子网共享失败。 创建共享 将VPC子网共享给其他账号 接受/拒绝共享邀请 退出共享
  • 规划节点类型 在OpenSearch集群中,合理规划不同节点类型对于优化性能和资源利用率至关重要。在创建集群时,应根据业务需求、查询负载、数据增长模式和性能目标来确定添加哪些类型的节点,以实现合适的集群性能和资源管理。表3是介绍了不同节点类型的适用场景,建议用户根据具体的业务需求和性能预期来选择是否启用该类节点。 如果创建集群时未启用Master节点或Client节点,当业务运行一段时间后,发现数据节点压力太大时,支持单独添加Master节点或Client节点,具体操作请参见添加Master或Client节点。 如果创建集群时未启用冷数据节点,则集群创建完成后不支持单独添加冷数据节点,请在创建集群时合理选择是否启用冷数据节点。 表3 各类节点的适用场景 节点类型 节点功能描述 适用场景 数据节点(ess) 数据节点用于存储数据,当集群没有Master节点和Client节点时,数据节点会同时兼顾这两类节点的功能。 集群必配的节点类型。 当集群未启用Master节点和Client节点时,数据节点将同时承担集群管理、存储数据、提供接入集群和分析数据的职责。此时,为保证集群中数据的稳定性,建议设置节点数量大于等于3个。 当集群启用了Master节点但未启用Client节点时,数据节点将用于存储数据并提供接入集群和分析数据的功能。 当集群未启用Master节点但启用了Client节点时,数据节点将用于存储数据并提供集群管理功能。 当集群同时启用了Master节点和Client节点时,数据节点将仅用于存储数据。 Master节点(ess-master) Master节点负责管理集群中所有节点任务,如元数据管理、索引创建与删除、分片分配等。在大规模集群的元数据管理、节点管理、稳定性保障和集群操作控制中发挥着至关重要的作用。 集群规模较大:当集群的节点数超过16个时,为了更有效地管理集群状态和元数据,建议添加专用的Master节点。 拥有高索引和分片数量:如果索引数量或分片数超过1万个,Master节点可以处理更复杂的集群管理任务,避免对数据节点的性能造成影响。 单独管理集群节点:Master节点负责维护集群的元数据,包括索引映射、设置和别名等,对于复杂的集群结构,专用的Master节点可以提供更好的管理。包括节点加入、退出以及故障检测等,Master节点在集群节点管理中扮演核心角色。 提升集群稳定性和可靠性:专用的master节点可以提高集群的稳定性和可靠性,因为它减少了对同时承担数据存储和查询任务的节点的依赖。 优化数据节点性能:通过将集群管理任务从数据节点分离到Master节点,可以优化数据节点的性能,使其专注于数据操作。 Client节点(ess-client) Client节点负责接收并协调外部请求,如search和write请求,在处理高负载查询、复杂聚合、大量分片管理以及优化集群扩展性方面发挥着重要作用。 存在高查询QPS:当集群面临高查询每秒查询率(QPS)时,独立的Client节点可以更均匀地分发查询请求,减轻数据节点的负担,提高整体查询性能。 存在复杂的聚合查询: 对于需要大量计算资源的复杂聚合查询,Client节点可以专门处理聚合结果,从而提升聚合查询的效率和响应速度。 集群分片数量多:在分片数量较多的集群中,Client节点可以有效地协调和管理对各个分片的查询请求,提高请求的转发和处理效率。 可以减轻数据节点压力:Client节点负责解析search请求,确定索引分片的位置,并协调分片节点执行查询。可以减轻数据节点的负载,使它们更专注于数据的存储和索引。 提高集群扩展性:增加client节点可以提供更好的集群扩展性和灵活性,支持更大规模的数据集和更复杂的查询需求。 冷数据节点(ess-cold) 冷数据节点用于存储对查询时延要求不高,但数据量较大的历史数据,是管理大规模数据集和优化存储成本的有效方式。 需要存储大量历史数据:当需要存储大量不常访问但对分析有用的历史数据时,使用冷数据节点可以提供成本效益较高的存储解决方案。 需要优化热数据性能:通过将旧数据迁移到冷数据节点,可以减少对热数据节点的存储压力,从而优化热数据的查询和写入性能。 对查询时延要求不高:对于那些查询频率不高且可以容忍较高查询时延的数据,冷数据节点是合适的存储选择。 追求成本效益:冷数据节点通常采用具有较大磁盘容量的规格,这有助于降低存储成本,同时满足大规模数据存储需求。
  • 规划集群可用区 为防止数据丢失,并确保在服务中断情况下能降低集群的停机时间,从而增强集群的高可用性,CSS服务支持跨可用区(即多可用区)部署。用户可以在同一个区域内选择两个或三个不同的可用区进行集群部署。 在创建集群时,如果用户选择了两个或三个可用区,CSS服务将自动开启跨AZ的高可用性特性,确保节点在这些可用区内均匀分配。系统均匀分配的节点满足各个AZ之间节点数量的差小于等于1,具体的节点分布情况,包括不同数量的节点如何在各个可用区中分布,可以参考表1。 在创建集群时,选择的任意类型的节点数量都要大于等于所选的AZ数量,否则跨可用区部署会失败。 部署跨AZ集群时,任意类型的节点都会被均匀的分布在不同的AZ上。 表1 节点数量和AZ分布 集群节点个数 单AZ 两AZ 三AZ AZ1 AZ1 AZ2 AZ1 AZ2 AZ3 1个节点 1 不支持 不支持 2个节点 2 1 1 不支持 3个节点 3 2 1 1 1 1 4个节点 4 2 2 2 1 1 … … … … … … … 在选择多可用区部署时,建议合理配置副本数量,以更高效地利用跨可用区的高可用性特性。 在跨两个可用区的部署中,当其中一个AZ不可用时,剩下的AZ需要继续提供服务,因此索引的副本个数至少为1个。由于Elasticsearch默认副本数为1个,因此如果您对读性能没有特殊要求,可以直接使用默认值。 在跨三个可用区部署中,为了保证其中任意一个AZ不可用时,剩余的AZ可以继续提供服务,因此索引的副本数至少要为1个。为了提高集群的查询能力,也可以设置更多的副本。由于Elasticsearch默认的副本数为1个,因此需要用户修改setting配置来实现修改索引副本个数。 可以通过如下命令修改索引的副本个数,如: curl -XPUT http://ip:9200/{index_name}/_settings -d '{"number_of_replicas":2}' 也可以通过在模板中指定所有索引的副本个数,如: curl -XPUT http://ip:9200/ _template/templatename -d '{ "template": "*", "settings": {"number_of_replicas": 2}}' 其中,“ip”表示集群内网访问地址,“index_name”表示索引名称,“number_of_replicas”表示修改后的索引副本个数,此处以修改为2个索引副本为例。 当采用多可用区部署时,如果某个可用区发生故障,相关的业务故障行为分析及应对策略请参见表2。 表2 AZ故障的业务故障行为分析 可用区数量 主节点个数 业务中断行为及应对建议 2 0 如果节点个数为2的倍数: 一半的数据节点故障,需要替换故障可用区中的一个节点,才能继续选择主节点。 如果节点数为奇数: 故障AZ含多一个节点,需要替换故障可用区中一个节点,才能继续选择主节点。相关替换请联系技术支持。 故障AZ含少一个节点,不中断业务,能够继续选择主节点。 2 3 有50%机会的停机时间。当两个专用主节点分配到一个可用区中,一个主节点分配到另一个可用区中时: 如果具有一个专用主节点的可用区遇到中断,则剩余可用区具有两个专用主节点,这两个专用主节点可以选择出主节点。 如果具有两个专用主节点的可用区遇到中断,剩余可用区只有一个专用主节点,无法选择出主节点,业务中断,需要联系技术支持。 3 0 当您选择3个可用区,节点个数为4,三个可用区的节点分布数为2,1,1,如果节点个数为2的可用区故障,那么此时业务中断,建议您选择三个可用区时避免选择4个节点。 一般不会出现业务中断时间。 3 3 无业务中断时间。 当集群创建完成后,支持切换可用区,具体操作请参见切换OpenSearch集群可用区。 切换可用区包含两大场景:可用区高可用改造和可用区平移切换。 可用区高可用改造:适用于单AZ改造成两AZ、单AZ改造成三AZ或两AZ改造成三AZ的场景,目的是为了提升集群的高可用性。 可用区平移切换:适用于从一个AZ完全迁移到另一个AZ的场景,目的是为了解决当前可用区资源不足的问题。
  • OpenSearch使用流程 表1 OpenSearch集群的使用流程 任务分类 操作 参考文档 使用 规划集群 在创建OpenSearch集群前,需要先完成集群规划。规划时,应考虑是否多可用区部署以提高集群的高可用性,合理配置集群的节点类型与节点存储规格,以及根据业务需求选择适当的集群版本和安全模式,同时注意索引分片的优化,以确保集群的稳定性和性能。 OpenSearch集群规划建议 创建集群 基于集群规划,创建合适的OpenSearch集群。 创建OpenSearch集群 访问集群 OpenSearch集群提供多样化的访问方式,包括Kibana、Cerebro、开源API、Java、Python和Go客户端,以及通过内网和公网的多种网络配置,用户可根据编程语言偏好和网络环境选择最合适的接入方法。 OpenSearch集群访问方式 导入数据 OpenSearch集群提供多种数据导入方式,包括Logstash、开源Elasticsearch API、 云数据迁移 服务 CDM 数据复制服务 DRS,支持不同来源和格式的数据导入,以及针对关系型数据库的实时同步,用户可根据业务场景和数据特性选择最佳方法。 OpenSearch集群导入数据方式 搜索数据 CSS服务推荐使用DSL语言在OpenSearch集群中搜索数据,同时也支持使用SQL语言进行数据搜索。 使用DSL语言在OpenSearch中搜索数据 使用SQL语言在OpenSearch中搜索数据 增强集群搜索能力 CSS服务的OpenSearch集群基于社区版本提供了一系列增强特性,包括向量检索、存算分离、流量控制、大查询隔离、聚合增强、读写分离、冷热数据切换、索引回收站等,以适应不同场景下的性能和成本优化需求,增强集群稳定性和搜索能力。 OpenSearch集群搜索增强特性介绍 运维 备份与恢复 备份与恢复是通过集群快照备份OpenSearch集群数据,在数据丢失或需要历史数据时快速恢复数据,提升集群的数据可靠性。 创建快照备份OpenSearch集群数据 恢复OpenSearch集群数据 扩缩容 CSS服务提供灵活的扩容和缩容功能,支持增加节点数量、升级节点规格、增加节点类型,以及随机或指定缩容节点,以动态调整集群资源,适应不同业务需求并优化成本。 扩容OpenSearch集群 缩容OpenSearch集群的节点数量 管理集群 CSS服务提供全面的集群管理功能,包括集群信息查看、集群用户授权、标签管理、安全模式更改、节点替换、企业项目绑定、可用区切换、自定义词库配置等,旨在帮助用户高效、灵活地管理OpenSearch集群,确保集群的安全性、高可用性和性能优化。 管理OpenSearch集群 管理集群索引策略 使用OpenSearch的ISM(Index State Management)插件创建和管理索引的生命周期策略,包括策略的创建、索引关联、以及策略的管理与变更,旨在优化集群性能和降低存储成本。 创建及管理OpenSearch索引策略 监控与日志管理 CSS服务提供全面的监控和日志管理功能,包括集群和节点监控指标、告警规则配置、日志备份与采集,以及智能运维工具,帮助用户有效监控、分析和维护OpenSearch集群,确保集群的稳定性和性能。 CES 中OpenSearch集群支持的监控指标 使用CES监控OpenSearch集群 设置OpenSearch集群 SMN 告警通知 智能检测OpenSearch集群风险 查询和管理OpenSearch集群日志 审计日志 通过 云审计 服务,用户可以记录和查询OpenSearch集群的关键操作事件,且操作记录在管理控制台保存最近7天,便于后续的审计和回溯。 查看OpenSearch集群审计日志 父主题: 使用OpenSearch搜索数据
共100000条