华为云用户手册

  • 管理索引策略 在OpenSearch Dashboard的“Index Management”页面,选择“Managed Indices”,进入索引策略管理列表。 此处会展示当前集群已配置的索引策略。 在索引策略管理列表,管理策略。 当索引的策略状态异常时,可以勾选状态异常的索引,单击“Retry policy”,可以重试策略。 当需要更新索引的策略时,可以勾选索引,单击“Change policy”进入变更策略页面,更新策略后,单击“Change”变更策略。 当需要解除索引的策略时,可以勾选索引,单击“Remove policy”,在弹窗确认后单击“Remove”该索引将被解除策略。 具体使用可参考索引管理官方介绍。
  • 场景介绍 简繁体转换插件是一款可以使中文简体和中文繁体相互转换的插件。通过该插件的转换,用户可以使用中文繁体关键字搜索出包含对应中文简体的索引数据,也可以使用中文简体关键字搜索出包含对应中文繁体的索引数据。 云搜索服务 默认安装了简繁体转换插件,用户无需自行安装。 简繁体转换插件通常可以当做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" : "國際電視臺" } } ] }}
  • 背景信息 云搜索服务的词库用于对文本进行分词,使得一些特殊词语在分词的时候能够被识别出来,便于根据关键词搜索文本数据。例如,根据公司名称来查询,如“华为”;或者根据网络流行词来查询,如“喜大普奔”。也支持基于同义词词库,根据同义词搜索文本数据。 CSS 服务使用的分词器包括IK分词器和同义词分词器。IK分词器配备主词词库和停词词库;同义词分词器配备同义词词库。其中,IK分词器包含ik_max_word和ik_smart分词策略。同义词分词器使用的是ik_synonym分词策略。 ik_max_word:会将文本做最细粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,昨夜,西风,吹折千林梢,吹折,千林梢,千,林,折千林,千林,吹”,会穷尽各种可能的分词组合。 ik_smart:会做最粗粒度的拆分,比如会将“昨夜西风吹折千林梢”拆分为“昨夜西风,吹折千林梢”。 CS S服务给集群预置了静态主词词库、静态停词词库、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。
  • SQL使用示例 在Kibana中使用SQL语言搜索数据(推荐) 在Kibana的DevTools中将请求发送到“_opendistro/_sql”,可以使用请求参数或请求正文。 例如,执行如下命令,从“my-index”索引中搜索出50条数据。 1234 POST _opendistro/_sql{ "query": "SELECT * FROM my-index LIMIT 50"} 默认情况下,查询结果返回的是JSON格式的数据。当需要返回CSV格式的数据时,则需要在命令中对format参数进行如下设置: 1234 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分别表示安全模式集群的用户名和密码。
  • OpenSearch集群搜索增强特性介绍 云搜索服务的OpenSearch集群在开源OpenSearch基础上增加了许多增强特性,增强特性的功能和支持的集群版本请参见表1。 表1 OpenSearch集群搜索增强特性列表 增强特性 特性描述 支持的集群版本 相关文档 向量检索 向量检索支持对图像、视频、语料等非结构化数据提取的特征向量数据进行最近邻或近似近邻检索。 OpenSearch 1.3.6 向量检索特性介绍 存算分离 存算分离支持将集群新写入的数据存储在SSD来达到最佳的查询检索性能,将历史数据存储到OBS中降低数据的存储成本。 存算分离和切换冷热数据比,更适用于对搜索性能要求不高的场景,冷数据存储在OBS中,存储成本更低一些。 OpenSearch 1.3.6 配置OpenSearch集群存算分离 切换冷热数据 通过切换冷热数据,可以将部分现查要求秒级返回的数据放在高性能机器上面作为热数据,对于历史数据要求分钟级别返回的数据放在大容量低规格节点作为冷数据。冷热数据切换可以减低存储成本,提升搜索效率。 切换冷热数据和存算分离比,更适用于对搜索性能要求高的场景,冷数据存储在集群本地的冷数据节点中,存储的数据量大小依赖冷数据节点数和磁盘容量,存储成本也会比OBS高一些。 只要集群有冷数据节点就支持。 切换OpenSearch集群冷热数据 父主题: 增强OpenSearch集群搜索能力
  • 复合查询 向量检索支持与其他Elasticsearch子查询组合进行复合查询,包括前置过滤查询、布尔查询等方式。 前置过滤查询仅Elasticsearch 7.10.2版本的集群支持。 以下示例的查询场景:查询Top10条“my_label”的值为“red”的结果。 前置过滤查询:先执行过滤条件检索,筛选出符合条件的结果;然后,对这些筛选后的候选结果进行向量相似度检索,以找出最相似的向量。 查询示例如下: POST my_index/_search{ "size": 10, "query": { "vector": { "my_vector": { "vector": [1, 2], "topk": 10, "filter": { "term": { "my_label": "red" } } } } }} 如果“filter”过滤条件非常强,过滤后的中间结果集较小,则可以通过设置索引参数“index.vector.exact_search_threshold”,实现前置过滤查询切换为暴力查询以提升查询的召回率,参数介绍请参见创建向量索引。 布尔查询:布尔查询实际上是后置过滤查询方式。过滤条件与向量相似度检索分别独立执行,执行完成后对两者的检索结果进行合并,合并逻辑由must、should、filter等谓词决定。 查询示例如下: POST my_index/_search{ "size": 10, "query": { "bool": { "must": { "vector": { "my_vector": { "vector": [1, 2], "topk": 10 } } }, "filter": { "term": { "my_label": "red" } } } }}
  • ScriptScore查询 写入向量数据后,针对向量字段可以使用ScriptScore进行最近邻查询,查询语法如下所示。 前置过滤条件可以为任意查询,script_score仅针对前置过滤的结果进行遍历,计算向量相似度并排序返回。此种查询方式不使用向量索引算法,性能取决于前置过滤后中间结果集的大小,当前置过滤条件为"match_all"时,相当于全局暴力检索。 POST my_index/_search { "size":2, "query": { "script_score": { "query": { "match_all": {} }, "script": { "source": "vector_score", "lang": "vector", "params": { "field": "my_vector", "vector": [1.0, 2.0], "metric": "euclidean" } } } } } 表3 script_score参数说明 参数 说明 source script脚本描述,使用向量相似度打分时为固定值"vector_score"。 lang script语法描述,使用固定值"vector"。 field 向量字段名称。 vector 查询向量数据。 metric 度量方式,可选值为:euclidean、inner_product、cosine、hamming。 默认值:euclidean。
  • Painless语法扩展查询 CSS扩展实现了多种向量距离计算函数,可在自定义的painless脚本中直接使用,用以构建灵活的重打分公式。 示例如下: POST my_index/_search{ "size": 10, "query": { "script_score": { "query": { "match_all": {} }, "script": { "source": "1 / (1 + euclidean(params.vector, doc[params.field]))", "params": { "field": "my_vector", "vector": [1, 2] } } } }} 表5 支持的距离计算函数 函数签名 说明 euclidean(Float[], DocValues) 欧式距离函数。 cosine(Float[], DocValues) 余弦相似度函数。 innerproduct(Float[], DocValues) 内积函数。 hamming(String, DocValues) 汉明距离函数。只支持"dim_type"为"binary"的向量字段,输入的查询向量需要为Base64编码字符串格式。
  • 标准查询 针对创建了向量索引的向量字段,提供了标准向量查询语法。下述查询命令将会返回所有数据中与查询向量最近的size(topk)条数据。 POST my_index/_search{ "size":2, "_source": false, "query": { "vector": { "my_vector": { "vector": [1, 1], "topk":2 } } }} 表1 标准查询的参数说明 参数 说明 vector(第一个) 表示该查询类型为VectorQuery。 my_vector 指定了需要查询的向量字段名称。 vector(第二个) 指定查询向量的具体值,支持数组形式以及Base64编码形式的输入。 topk topk的值通常与size保持一致。 其他可选的查询参数 通过调整不同索引的查询参数,可以获得更高的查询性能或者查询精度,其他参数请参见表2。 表2 可选的查询参数说明 参数 子参数 说明 GRAPH类索引配置参数 ef 查询时考察邻居节点的队列大小。值越大查询精度越高,查询速度会变慢。默认值为200。 取值范围:(0, 100000]。 max_scan_num 扫描节点上限。值越大精度越高,查询速度变慢。默认值为10000。 取值范围:(0, 1000000]。 IVF类索引配置参数 nprobe 查询考察中心点的数目。值越大精度越高,查询速度变慢。默认值为100。 取值范围:(0, 100000]。
  • 重打分查询 当使用GRAPH_PQ索引或者IVF_GRAPH_PQ索引时,查询结果是根据PQ计算的非对称距离进行排序。CSS支持Rescore的方式对查询结果进行重打分精排,提升召回率。 假设my_index是PQ类型的索引,Rescore示例如下: GET my_index/_search { "size": 10, "query": { "vector": { "my_vector": { "vector": [1.0, 2.0], "topk": 100 } } }, "rescore": { "window_size": 100, "vector_rescore": { "field": "my_vector", "vector": [1.0, 2.0], "metric": "euclidean" } } } 表4 Rescore参数说明 参数 说明 window_size 向量检索将会返回topk条结果,仅取前window_size条结果精排。 field 向量字段名称。 vector 查询向量数据。 metric 度量方式,可选值为:euclidean、inner_product、cosine、hamming。 默认值:euclidean。
  • 代码示例 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 from opensearchpy import OpenSearch# 创建客户端def get_client(hosts: list, user: str = None, password: str = None): if user and password: return OpenSearch(hosts, http_auth=(user, password), verify_certs=False, ssl_show_warn=False) else: return OpenSearch(hosts)# 创建索引表def create(client: OpenSearch, index: str): # 索引mapping信息 index_mapping = { "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" } # 可根据需求添加其他字段 } } } res = client.indices.create(index=index, body=index_mapping) print("create index result: ", res)# 写入数据def write(client: OpenSearch, index: str, vecs: list, bulk_size=500): for i in range(0, len(vecs), bulk_size): actions = "" for vec in vecs[i: i + bulk_size]: actions += '{"index": {"_index": "%s"}}\n' % index actions += '{"my_vector": %s}\n' % str(vec) client.bulk(body=actions, request_timeout=3600) client.indices.refresh(index=index, request_timeout=3600) print("write index success!")# 查询向量索引def search(client: OpenSearch, index: str, query: list[float], size: int): # 查询语句,可根据需求选择合适的查询方式 query_body = { "size": size, "query": { "vector": { "my_vector": { "vector": query, "topk": size } } } } res = client.search(index=index, body=query_body) print("search index result: ", res)# 删除索引def delete(client: OpenSearch, index: str): res = client.indices.delete(index=index) print("delete index result: ", res)if __name__ == '__main__': os_client = get_client(hosts=['http://x.x.x.x:9200']) # 对于开启了https的安全集群,使用: # os_client = get_client(hosts=['https://x.x.x.x:9200', 'https://x.x.x.x:9200'], user='xxxxx', password='xxxxx') # 对于未开启https的安全集群,使用: # os_client = get_client(hosts=['http://x.x.x.x:9200', 'http://x.x.x.x:9200'], user='xxxxx', password='xxxxx') # 测试索引名称 index_name = "my_index" # 创建索引 create(os_client, index=index_name) # 写入数据 data = [[1.0, 1.0], [2.0, 2.0], [3.0, 3.0]] write(os_client, index=index_name, vecs=data) # 查询索引 query_vector = [1.0, 1.0] search(os_client, index=index_name, query=query_vector, size=3) # 删除索引 delete(os_client, index=index_name)
  • 管理配置文件 在配置文件列表,支持对创建的配置文件进行编辑、添加到自定义模板、删除等操作。 表3 管理配置文件 功能 使用限制 操作指导 修改配置文件 当配置文件有执行中的管道任务时,不支持修改。 在配置文件列表,单击操作列的“编辑”进入编辑配置文件页面,可以修改“配置文件内容”、“隐藏内容列表”及运行参数。 将配置文件设置为模板 无 在配置文件列表,单击操作列的“添加到自定义模板”进入添加到自定义模板页面,设置模板名称、描述和配置文件内容,单击“确定”添加到自定义模板列表中,方便下次创建配置文件时直接使用。 导出配置文件 无 在配置文件列表,单击右上角的,可以批量导出配置文件到本地,便于本地备份。 删除配置文件 当配置文件有执行中的管道任务时,不支持删除。 在配置文件列表,单击操作列的“删除”,在弹窗中单击“确定”删除配置文件。
  • 连接安全集群 连接未开启https的安全集群,示例如下: 1 2 3 4 5 6 7 8 910111213141516171819 package mainimport ("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 91011121314151617181920212223242526 package mainimport ("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 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 package mainimport ("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 errorrootCAs, _ := x509.SystemCertPool()if rootCAs == nil {rootCAs = x509.NewCertPool()}// Read in the cert filecerts, 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 poolif 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 用户名对应的密码。
  • 运行代码 根据集群类型将以上适配的代码写入到“EsTest.gc”文件并存放到一个单独的目录,在该目录执行以下命令运行代码。 go env -w GO111MODULE=ongo env -w GOPROXY=https://repo.huaweicloud.com/repository/goproxy/ go env -w GONOSUMDB=*go mod init testgo mod tidygo run EsTest.go
  • 连接非安全集群 连接非安全集群,示例代码如下: 1 2 3 4 5 6 7 8 91011121314151617 package mainimport ("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地址。
  • 约束限制 CSS开启公网访问后,会使用到EIP和带宽资源,涉及相关资源费用。 仅Elasticsearch集群版本≥6.5.4和OpenSearch集群才支持开启“安全模式”。 公网访问和终端节点服务使用的是同一个负载均衡。当集群开启了公网访问白名单,由于白名单是作用在负载均衡上面,将会同时限制公网访问集群和内网通过VPCEP访问集群的IP地址。此时需要在公网访问白名单中添加一个网络白名单“198.19.128.0/17”,通过该白名单用来放通经过VPCEP的流量。
  • 创建集群时配置公网访问 登录云搜索服务管理控制台。 在创建集群页面,开启“安全模式”。设置管理员密码,并启用HTTPS访问。 “公网访问”选择“自动绑定”,配置公网访问相关参数。 图1 创建集群时配置公网访问 表1 公网访问参数说明 参数 说明 带宽 设置公网访问的带宽。 访问控制开关 如果关闭访问控制开关,则允许任何IP通过公网IP访问集群。如果开启访问控制开关,则只允许白名单列表中的IP通过公网IP访问集群。 白名单 设置允许访问的IP地址或网段,中间用英文逗号隔开。仅当打开“访问控制开关”时才需要配置。
  • 通过公网IP地址接入集群 公网访问配置完成后,集群将会获得一个“公网访问”的IP地址,用户可以通过公网IP地址和端口接入集群。 例如,启用HTTPS的安全集群的公网访问地址为“10.62.179.32”,端口为“9200”,则执行Curl命令查看集群中的索引信息。 curl -u username:password -k 'https://10.62.179.32:9200/_cat/indices' 其中username和password表示安全集群的用户名和密码。
  • 已有集群配置公网访问 您可以对已经创建集群的公网访问进行修改,查看,解绑,也可以配置公网访问。 登录云搜索服务管理控制台。 在集群管理页面,单击需要配置公网访问的集群名称,进入集群基本信息页面,管理公网访问相关配置。 图2 修改公网访问相关配置 配置公网访问 如果创建安全集群时,开启了HTTPS访问但未配置公网访问,集群创建成功后,可以在集群基本信息页面配置公网访问。 单击“公网访问”参数右侧的“绑定”,设置访问带宽后,单击“确定”。 如果绑定失败,用户可以等待几分钟后,再次尝试重新绑定公网访问。 修改 对已经配置了公网访问的集群,可以通过单击“带宽”参数右侧的“修改”,修改带宽大小,也可以通过单击“访问控制”右侧的“设置”,设置访问控制开关和访问白名单。 查看 在“基本信息”页面,可以查看当前集群绑定的公网IP地址。 解绑 对于已经绑定的公网IP地址,可以通过单击“公网访问”参数右侧的“解绑”,解绑公网IP地址。 解绑公网访问后,将无法通过公网IP地址访问集群。当关闭集群的公网访问后再重新打开,集群的公网地址可能会发生变化,请谨慎操作。
  • 管理向量索引缓存 CSS的向量检索引擎使用C++实现,使用的是堆外内存,该插件提供了接口对向量索引的缓存进行管理。 查看缓存统计信息 GET /_vector/stats 在向量插件实现中,向量索引与Lucene其他类型索引一样,每一个segment构造并存储一份索引文件,在查询时,该索引文件会被加载到堆外内存中。插件使用缓存机制对这些堆外内存进行管理。上述API能够查询当前堆外内存使用量、缓存命中次数、加载次数等信息。 预加载向量索引 PUT /_vector/warmup/{index_name} 使用上述接口能将指定index_name的向量索引预加载至堆外内存供查询使用。 清除缓存 PUT /_vector/clear/cache PUT /_vector/clear/cache/index_name 在使用向量索引时,缓存机制会限制堆外内存使用量。当总索引大小超出缓存大小限制时,将会发生索引项的换进换出,此时将会影响查询的性能。通过清除缓存API能够将不再使用的索引缓存清空,保证热数据索引的查询性能。 父主题: 配置Elasticsearch集群向量检索
  • 场景描述 聚合增强在数据聚簇的情况下,利用向量化技术,批量处理数据,从而提升聚合性能,优化可观测性业务的聚合分析能力。 在大规模数据的集聚合分析场景下,耗时主要集中在对数据的分组聚合。 提升分组聚合能力依赖排序键和聚簇键。 排序键:数据按照排序键顺序存储。 聚簇键:是排序键的前缀子集,数据按照聚簇键聚簇在一起。 聚合增强常见的使用场景请参见表1。 表1 聚合增强的使用场景 场景 描述 相关文档 低基字段聚合 表示对具有较少不同值的列进行聚合,如对一个存储类别的列进行聚合。 低基字段分组聚合 高基字段聚合 表示对具有较多不同值的列进行聚合,如对一个存储时间的列进行按天的时间聚合。 高基字段直方图聚合 低基字段和高基字段混合聚合 表示对以上两种类型的聚合混合在一起,如先对低基字段做分组聚合,然后再对高基字段做直方图聚合。 低基字段分组聚合混合高基字段直方图聚合
  • 性能测试对比 测试环境 数据集: esrally nyc_taxis数据集 集群规格: 4U16G 100GB高IO * 3节点 测试步骤 在集群中创建索引模板,指定排序键和关闭聚合增强。 PUT /_template/nyc_taxis{ "template": "nyc_taxis*", "settings": { "index.search.turbo.enabled": false, "index.sort.field": "dropoff_datetime", "number_of_shards": 3, "number_of_replicas": 0 }} 使用esrally执行nyc_taxis数据集的测试,得到关闭聚合增强时的结果。 在同一个集群中创建索引模板,指定排序键和开启聚合增强。 PUT /_template/nyc_taxis{ "template": "nyc_taxis*", "settings": { "index.search.turbo.enabled": true, "index.sort.field": "dropoff_datetime", "number_of_shards": 3, "number_of_replicas": 0 }} 使用esrally执行nyc_taxis数据集的测试,得到开启聚合增强时的结果。 测试结果 本次测试仅关注针对“dropoff_datetime”聚合的查询结果,即只关注“autohisto_agg”和“date_histogram_agg”两个任务的结果,以下为该任务的测试结果对比。 Metric Task Unit 关闭聚合增强 开启聚合增强 关闭聚合增强 开启聚合增强 open/close 结论 测试轮次1 测试轮次2 测试轮次3 测试轮次1 测试轮次2 测试轮次3 均值 均值 Min Throughput autohisto_agg ops/s 4.42 4.44 4.43 11.66 11.94 11.96 4.43 11.85 2.68 吞吐量提升2.5倍以上 Mean Throughput autohisto_agg ops/s 4.50 4.46 4.44 11.81 11.99 12.00 4.47 11.93 2.67 Median Throughput autohisto_agg ops/s 4.51 4.46 4.44 11.83 11.98 12.00 4.47 11.94 2.67 Max Throughput autohisto_agg ops/s 4.54 4.48 4.45 11.90 12.07 12.02 4.49 12.00 2.67 100th percentile latency autohisto_agg ms 216.30 - - - 84.56 80.38 216.30 82.47 0.38 时延下降60%以上 100th percentile service time autohisto_agg ms 216.30 - - - 84.56 80.38 216.30 82.47 0.38 error rate autohisto_agg % 0 0 0 0 0 0 0 0 0 - Min Throughput date_histogram_agg ops/s 4.72 4.67 4.65 12.57 12.40 12.59 4.68 12.52 2.68 吞吐量提升2.5倍以上 Mean Throughput date_histogram_agg ops/s 4.73 4.67 4.67 12.61 12.46 12.61 4.69 12.56 2.68 Median Throughput date_histogram_agg ops/s 4.73 4.67 4.67 12.62 12.46 12.60 4.69 12.56 2.68 Max Throughput date_histogram_agg ops/s 4.74 4.67 4.67 12.64 12.49 12.63 4.69 12.59 2.68 50th percentile latency date_histogram_agg ms 202.61 218.09 213.43 77.64 76.02 82.63 211.38 78.77 0.37 时延下降60%以上 100th percentile latency date_histogram_agg ms 207.35 223.88 246.63 77.99 - - 225.95 77.99 0.35 50th percentile service time date_histogram_agg ms 202.61 218.09 213.43 77.64 76.02 82.63 211.38 78.77 0.37 100th percentile service time date_histogram_agg ms 207.35 223.88 246.63 77.99 - - 225.95 77.99 0.35 error rate date_histogram_agg % 0 0 0 0 0 0 0 0 0 - 测试结论 在集群配置相同的情况下,开启聚合增强后,聚合性能显著提升,查询吞吐量提升2.5倍以上,查询时延下降60%以上。
  • 高基字段直方图聚合 高基字段一般采用直方图分组聚合,利于处理某个区间内的数据。 例如,查询语句如下所示。这条查询是对时间字段timestamp做直方图分组,然后求score的平均值。 POST testindex/_search?pretty{ "size": 0, "aggs": { "avg_score": { "avg": { "field": "score" }, "aggs": { "groupbytime": { "date_histogram": { "field": "timestamp", "calendar_interval": "day" } } } } }} 当需要对典型的高基字段“timestamp”进行聚合增强时,则需要对索引进行如下设置。 // 索引设置"settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "timestamp" ] } }}
  • 低基字段分组聚合混合高基字段直方图聚合 在低基字段和高基字段混合的场景下,一般先对低基字段做分组聚合,然后再对高基字段做直方图聚合。 假如,查询语句如下所示。 POST testindex/_search{ "size": 0, "aggs": { "groupby_region": { "terms": { "field": "region" }, "aggs": { "groupby_host": { "terms": { "field": "host" }, "aggs": { "groupby_timestamp": { "date_histogram": { "field": "timestamp", "interval": "day" }, "aggs": { "avg_score": { "avg": { "field": "score" } } } } } } } } }} 当需要先对“region”低基字段进行分组,再对“host”低基字段进行分组,最后对“timestamp”高基字段进行直方图分组时,聚合增强的索引设置如下。 // 索引设置"settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "region", "host", "timestamp", "other" ] }, "cluster" : { "field" : [ // 指定聚簇键 "region", "host" ] } }} 聚簇键必须是排序键的前缀子集。 高基字段必须在排序键中,且高基字段必须在最后一个低基字段后面。
  • 低基字段分组聚合 低基字段一般采用分组聚合,在排序的情况下具备较好的数据聚簇性,利于向量化批量处理数据。 例如,查询语句如下所示。 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" ] } }} 聚簇键必须是排序键的前缀子集。
  • 支持审计的关键操作列表 表1 支持审计的关键操作列表 操作名称 资源类型 事件名称 创建集群 cluster createCluster 按需集群转包周期 cluster updateOndemandClusterToPeriod 查询集群详情 cluster showClusterDetail 删除集群 cluster deleteCluster 修改集群名称 cluster updateClusterName 查询集群列表 cluster listClusters 修改集群密码 cluster resetPassword 重启集群 cluster restartCluster 扩容集群 cluster updateExtendCluster 扩容实例的数量和存储容量 cluster updateExtendInstanceStorage 变更规格 cluster updateFlavor 获取实例规格列表 cluster listFlavors 查询所有标签 cluster listClustersTags 查询指定集群的标签 cluster showClusterTag 添加指定集群标签 cluster createClustersTags 删除集群标签 cluster deleteClustersTags 批量添加或删除集群标签 cluster updateBatchClustersTags 指定节点缩容 cluster updateShrinkNodes 指定节点类型规格变更 cluster updateFlavorByType 指定节点类型缩容 cluster updateShrinkCluster 下载安全证书 cluster downloadCert 节点替换 cluster updateInstance 安全模式修改 cluster changeMode 添加独立Master、Client cluster addIndependentNode 集群内核升级 cluster upgradeCore 获取目标镜像ID cluster listImages 获取升级详情信息 cluster upgradeDetail 重试升级失败任务 cluster retryUpgradeTask 切换安全组 cluster changeSecurityGroup 创建集群V2 cluster createClusterV2 重启集群V2 cluster restartCluster 滚动重启 cluster rollingRestart 加载自定义词库 cluster createLoadIkThesaurus 查看自定义词库配置 cluster showIkThesaurus 删除自定义词库 cluster deleteIkThesaurus 开启Kibana公网访问 cluster startKibanaPublic 关闭Kibana公网访问 cluster updateCloseKibana 修改Kibana公网带宽 cluster updateAlterKibana 修改Kibana公网访问控制 cluster updatePublicKibanaWhitelist 关闭Kibana公网访问控制 cluster stopPublicKibanaWhitelist 开启日志功能 cluster startLogs 关闭日志功能 cluster stopLogs 查询作业列表 cluster listLogsJob 查询日志基础配置 cluster showGetLogSetting 修改日志基础配置 cluster updateLogSetting 开启日志自动备份策略 cluster startLogAutoBackupPolicy 关闭日志自动备份策略 cluster stopLogAutoBackupPolicy 备份日志 cluster createLogBackup 查询日志 cluster showLogBackup 开启公网访问 cluster createBindPublic 关闭公网访问 cluster updateUnbindPublic 修改公网访问带宽 cluster updatePublicBandWidth 开启公网访问控制白名单 cluster startPublicWhitelist 关闭公网访问控制白名单 cluster stopPublicWhitelist 自动设置集群快照的基础配置 cluster startAutoSetting 修改集群快照的基础配置 cluster updateSnapshotSetting 手动创建快照 snapshot createSnapshot 恢复快照 snapshot restoreSnapshot 删除指定快照 snapshot deleteSnapshot 设置自动创建快照策略 cluster createAutoCreatePolicy 查询自动创建快照的策略 cluster showAutoCreatePolicy 查询快照列表 cluster listSnapshots 停用快照功能 cluster stopSnapshot 开启自动创建快照功能 cluster startAutoCreateSnapshots 关闭自动创建快照功能 cluster stopAutoCreateSnapshots 开启终端节点服务 cluster startVpecp 关闭终端节点服务 cluster stopVpecp 获取终端节点连接 cluster showVpcepConnection 更新终端节点连接 cluster updateVpcepConnection 修改终端节点服务白名单 cluster updateVpcepWhitelist 修改参数配置 cluster listYmls 获取参数配置任务列表 cluster listYmlsJob 获取参数配置列表 cluster updateYmls 查询集群支持的elbv3负载均衡器 cluster listElbs 打开或关闭ES负载均衡器 cluster enableOrDisableElb ES监听器配置 cluster createElbListener 获取该esELB的信息 cluster showElbDetail 更新ES监听器 cluster updateEsListener 查询证书列表 cluster listElbCerts 获取智能运维任务列表及详情 cluster listAiOps 创建一次集群检测任务 cluster createAiOps 删除一个检测任务记录 cluster deleteAiOps 获取智能运维告警可用的 SMN 主题 cluster listSmnTopics
  • 支持审计的关键操作列表 表1 支持审计的关键操作列表 操作名称 资源类型 事件名称 创建集群 cluster createCluster 按需集群转包周期 cluster updateOndemandClusterToPeriod 查询集群详情 cluster showClusterDetail 删除集群 cluster deleteCluster 修改集群名称 cluster updateClusterName 查询集群列表 cluster listClusters 修改集群密码 cluster resetPassword 重启集群 cluster restartCluster 扩容集群 cluster updateExtendCluster 扩容实例的数量和存储容量 cluster updateExtendInstanceStorage 变更规格 cluster updateFlavor 获取实例规格列表 cluster listFlavors 查询所有标签 cluster listClustersTags 查询指定集群的标签 cluster showClusterTag 添加指定集群标签 cluster createClustersTags 删除集群标签 cluster deleteClustersTags 批量添加或删除集群标签 cluster updateBatchClustersTags 指定节点缩容 cluster updateShrinkNodes 指定节点类型规格变更 cluster updateFlavorByType 指定节点类型缩容 cluster updateShrinkCluster 下载安全证书 cluster downloadCert 节点替换 cluster updateInstance 安全模式修改 cluster changeMode 添加独立Master、Client cluster addIndependentNode 集群内核升级 cluster upgradeCore 获取目标镜像ID cluster listImages 获取升级详情信息 cluster upgradeDetail 重试升级失败任务 cluster retryUpgradeTask 切换安全组 cluster changeSecurityGroup 创建集群V2 cluster createClusterV2 重启集群V2 cluster restartCluster 滚动重启 cluster rollingRestart 加载自定义词库 cluster createLoadIkThesaurus 查看自定义词库配置 cluster showIkThesaurus 删除自定义词库 cluster deleteIkThesaurus 开启Kibana公网访问 cluster startKibanaPublic 关闭Kibana公网访问 cluster updateCloseKibana 修改Kibana公网带宽 cluster updateAlterKibana 修改Kibana公网访问控制 cluster updatePublicKibanaWhitelist 关闭Kibana公网访问控制 cluster stopPublicKibanaWhitelist 开启日志功能 cluster startLogs 关闭日志功能 cluster stopLogs 查询作业列表 cluster listLogsJob 查询日志基础配置 cluster showGetLogSetting 修改日志基础配置 cluster updateLogSetting 开启日志自动备份策略 cluster startLogAutoBackupPolicy 关闭日志自动备份策略 cluster stopLogAutoBackupPolicy 备份日志 cluster createLogBackup 查询日志 cluster showLogBackup 开启公网访问 cluster createBindPublic 关闭公网访问 cluster updateUnbindPublic 修改公网访问带宽 cluster updatePublicBandWidth 开启公网访问控制白名单 cluster startPublicWhitelist 关闭公网访问控制白名单 cluster stopPublicWhitelist 自动设置集群快照的基础配置 cluster startAutoSetting 修改集群快照的基础配置 cluster updateSnapshotSetting 手动创建快照 snapshot createSnapshot 恢复快照 snapshot restoreSnapshot 删除指定快照 snapshot deleteSnapshot 设置自动创建快照策略 cluster createAutoCreatePolicy 查询自动创建快照的策略 cluster showAutoCreatePolicy 查询快照列表 cluster listSnapshots 停用快照功能 cluster stopSnapshot 开启自动创建快照功能 cluster startAutoCreateSnapshots 关闭自动创建快照功能 cluster stopAutoCreateSnapshots 开启终端节点服务 cluster startVpecp 关闭终端节点服务 cluster stopVpecp 获取终端节点连接 cluster showVpcepConnection 更新终端节点连接 cluster updateVpcepConnection 修改终端节点服务白名单 cluster updateVpcepWhitelist 修改参数配置 cluster listYmls 获取参数配置任务列表 cluster listYmlsJob 获取参数配置列表 cluster updateYmls 查询集群支持的elbv3负载均衡器 cluster listElbs 打开或关闭ES负载均衡器 cluster enableOrDisableElb ES监听器配置 cluster createElbListener 获取该esELB的信息 cluster showElbDetail 更新ES监听器 cluster updateEsListener 查询证书列表 cluster listElbCerts 获取智能运维任务列表及详情 cluster listAiOps 创建一次集群检测任务 cluster createAiOps 删除一个检测任务记录 cluster deleteAiOps 获取智能运维告警可用的SMN主题 cluster listSmnTopics
  • 约束限制 2022年11月之后创建的集群(且集群版本不小于6.5.4)才支持切换安全模式。 在更改集群安全模式的过程中,集群会自动重启。重启会导致业务中断,并且重启后调用集群的认证方式也会发生改变,客户端需要做相应调整。 对于已打开过Kibana会话框的集群,在更改集群安全模式后,Kibana会提示Session错误,此时需要清理缓存再打开Kibana才能正常访问。 关闭集群的安全模式时,会清理安全集群的账号,安全账号被清理后将无法恢复。
  • 监控HTTP状态码 根据集群版本选择监控HTTP状态码的命令。 Elasticsearch 7.6.2集群执行如下命令,获取HTTP状态码统计。 GET /_nodes/http_stats 返回样例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-8362", "nodes" : { "F9IFdQPARaOJI7oL7HOXtQ" : { "http_code" : { "200" : 114, "201" : 5, "429" : 0, "400" : 7, "404" : 0, "405" : 0 } } } } Elasticsearch 7.10.2集群执行如下命令,获取HTTP状态码统计。 GET _nodes/stats/http 返回样例: {...... "cluster_name" : "css-2985", "nodes" : {...... "omvR9_W-TsGApraMApREjA" : {...... "http" : { "current_open" : 4, "total_opened" : 37, "http_code" : { "200" : 25, "201" : 7, "429" : 0, "400" : 3, "404" : 0, "405" : 0 } } } }}
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全