华为云用户手册

  • 配置大查询隔离 大查询隔离特性和全局超时特性默认关闭,用户可根据需要实时配置,配置后立即生效。 登录 云搜索服务 管理控制台。 在“集群管理”页面,选择待配置大查询隔离的集群,单击操作列“Kibana”,登录Kibana界面。 在Kibana的左侧导航中选择“Dev Tools”,执行如下命令开启大查询隔离和全局查询超时的特性开关。 PUT _cluster/settings { "persistent": { "search.isolator.enabled": true, "search.isolator.time.enabled": true } } 以上两个开关是独立功能,当开关打开后,支持配置的参数请参见表1。 表1 大查询隔离和全局超时的参数配置 特性开关 配置参数 参数说明 search.isolator.enabled search.isolator.memory.task.limit search.isolator.time.management 单个分片查询任务被定义为大查询任务的阈值。 search.isolator.memory.pool.limit search.isolator.memory.heap.limit search.isolator.count.limit 触发隔离池内查询任务中断的阈值。 说明: 参数“search.isolator.memory.heap.limit”定义了节点实际堆内存的使用限制,包括写入和查询等操作,超过限制时将选取隔离池内的大查询任务进行中断。 search.isolator.strategy search.isolator.strategy.ratio 中断隔离池中某一条查询任务的选取策略。 search.isolator.time.enabled search.isolator.time.limit 全局查询任务超时设置。 配置大查询隔离。 执行如下命令,设置单个分片查询任务被定义为大查询任务的阈值。 PUT _cluster/settings { "persistent": { "search.isolator.memory.task.limit": "50MB", "search.isolator.time.management": "10s" } } 表2 参数说明 参数名 数据类型 说明 search.isolator.memory.task.limit String 查询任务用于聚合等操作向节点申请的大内存,申请内存超过此阈值将进行隔离观察。 取值范围:0b~节点最大堆内存 默认值:50MB 说明: 可以通过如下命令查询集群堆内存使用情况和最大值。 GET _cat/nodes?&h=id,ip,port,r,ramPercent,ramCurrent,heapMax,heapCurrent search.isolator.time.management String 查询任务创建至今的时长(即开始使用集群资源进行查询),超过阈值将被隔离观察。 取值范围:≥ 0ms 默认值:10s 执行如下命令,触发隔离池内查询任务中断的阈值。 PUT _cluster/settings { "persistent": { "search.isolator.memory.pool.limit": "50%", "search.isolator.memory.heap.limit": "90%", "search.isolator.count.limit": 1000 } } 表3 参数说明 参数名 数据类型 说明 search.isolator.memory.pool.limit String 当前节点最大堆内存百分比,当隔离池所有大查询任务申请的内存超过此阈值将触发中断控制程序,取消执行隔离池其中一条大查询任务。 取值范围:0.0~100.0% 默认值:50% search.isolator.memory.heap.limit String 当前节点堆内存的实际使用阈值,当节点堆内存使用超过阈值百分比时触发中断控制程序,取消执行隔离池其中一条大查询任务。 取值范围:0.0~100.0% 默认值:90% search.isolator.count.limit Integer 当前节点隔离池的大查询任务数阈值,被观察的查询任务数超过此阈值将触发中断控制程序,不再接受新的大查询。如果继续触发大查询请求,则直接取消该请求。 取值范围:10~50000 默认值:1000 根据业务设置“search.isolator.memory.pool.limit”,“search.isolator.count.limit”参数时,可结合“search.isolator.memory.task.limit”,“search.isolator.time.management”两个参数控制查询任务进入到隔离池的数量。 执行如下命令,中断隔离池中某一条查询任务的选取策略。 PUT _cluster/settings { "persistent": { "search.isolator.strategy": "fair", "search.isolator.strategy.ratio": "0.5%" } } 参数名 数据类型 说明 search.isolator.strategy String 触发中断控制程序时大查询选取的策略。根据策略选取一条查询进行中断。 说明: 大查询隔离池每秒检查一次,直至堆内存下降到安全范围。 取值范围:fair、mem-first、time-first mem-first策略是指触发中断时,选取隔离池中堆内存使用最大的一条查询任务进行中断。 time-first策略是指触发中断时,选取隔离池中已运行时间最长的一条查询任务进行中断。 fair策略是综合考虑内存和时间两种因素,如果分片查询的堆内存申请大小相差不超过“最大堆内存乘search.isolator.strategy.ratio”的大小,则认为时间较长的查询更应该中断。否则认为堆内存使用较大的查询更应该中断。 默认值:fair search.isolator.strategy.ratio String fair策略的阈值,仅当“search.isolator.strategy”值为“fair”生效。综合考虑大查询的运行时间及内存,当大查询任务内存相差不超过此阈值时,考虑选取运行时间长的大查询进行中断。当查询内存相差超过此阈值时,选取大内存查询任务进行中断。 取值范围:0.0-100.0% 默认值:1% 配置全局查询超时。 执行如下命令,设置全局查询任务超时时间。 PUT _cluster/settings { "persistent": { "search.isolator.time.limit": "120s" } } 参数名 数据类型 说明 search.isolator.time.limit String 当全局查询超时功能开启时,所有已创建的查询任务超过此时长将被取消执行。 取值范围:≥ 0ms 默认值:120s
  • 配置简繁体转换搜索 登录 云搜索 服务管理控制台。 在左侧导航栏中,选择“集群管理”,进入集群列表页面。 在集群列表中,单击需要使用的集群对应“操作”列的“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" : "國際電視臺" } } ] } }
  • 场景介绍 简繁体转换插件是一款可以使中文简体和中文繁体相互转换的插件。通过该插件的转换,用户可以使用中文繁体关键字搜索出包含对应中文简体的索引数据,也可以使用中文简体关键字搜索出包含对应中文繁体的索引数据。 云搜索服务默认安装了简繁体转换插件,用户无需自行安装。 简繁体转换插件通常可以当做analyzer、tokenizer、token-filter或char-filter来使用。 简繁体转换插件的转换类型包含如下两种: s2t:将中文简体转换为中文繁体。 t2s:将中文繁体转换为中文简体。
  • Elasticsearch使用流程 表1 Elasticsearch集群的使用流程 任务分类 操作 参考文档 使用 规划集群 在创建Elasticsearch集群前,需要先完成集群规划。规划时,应考虑是否多可用区部署以提高集群的高可用性,合理配置集群的节点类型与节点存储规格,以及根据业务需求选择适当的集群版本和安全模式,同时注意索引分片的优化,以确保集群的稳定性和性能。 Elasticsearch集群规划建议 创建集群 基于集群规划,创建合适的Elasticsearch集群。 创建Elasticsearch集群 访问集群 Elasticsearch集群提供多样化的访问方式,包括Kibana、Cerebro、开源API、Java、Python和Go客户端,以及通过内网和公网的多种网络配置,用户可根据编程语言偏好和网络环境选择最合适的接入方法。 Elasticsearch集群访问方式 导入数据 Elasticsearch集群提供多种数据导入方式,包括Logstash、开源Elasticsearch API、 云数据迁移 服务 CDM 数据复制服务 DRS,支持不同来源和格式的数据导入,以及针对关系型数据库的实时同步,用户可根据业务场景和数据特性选择最佳方法。 Elasticsearch集群导入数据方式 搜索数据 CSS 服务推荐使用DSL语言在Elasticsearch集群中搜索数据,同时也支持使用SQL语言进行数据搜索。 使用DSL语言在Elasticsearch中搜索数据 使用SQL语言在Elasticsearch中搜索数据 增强集群搜索能力 CS S服务的Elasticsearch集群基于社区版本提供了一系列增强特性,包括向量检索、存算分离、流量控制、大查询隔离、聚合增强、读写分离、冷热数据切换、索引回收站等,以适应不同场景下的性能和成本优化需求,增强集群稳定性和搜索能力。 Elasticsearch集群搜索增强特性介绍 运维 备份与恢复 备份与恢复是通过集群快照备份Elasticsearch集群数据,在数据丢失或需要历史数据时快速恢复数据,提升集群的数据可靠性。 创建快照备份Elasticsearch集群数据 恢复Elasticsearch集群数据 扩缩容 CSS服务提供灵活的扩容和缩容功能,支持增加节点数量、升级节点规格、增加节点类型,以及随机或指定缩容节点,以动态调整集群资源,适应不同业务需求并优化成本。 扩容Elasticsearch集群 缩容Elasticsearch集群 升级 Elasticsearch集群支持同版本升级、跨版本升级和跨引擎升级。同版本升级是升级集群的内核补丁,用于修复问题或优化性能;跨版本升级是升级集群的版本,用于功能加强或版本收编;跨引擎升级是将Elasticsearch集群升级至OpenSearch集群。 升级Elasticsearch集群版本 管理集群 CSS服务提供全面的集群管理功能,包括集群信息查看、集群用户授权、标签管理、安全模式更改、节点替换、企业项目绑定、可用区切换、自定义词库配置等,旨在帮助用户高效、灵活地管理Elasticsearch集群,确保集群的安全性、高可用性和性能优化。 查看Elasticsearch集群信息 创建Elasticsearch集群用户并授权使用 设置Elasticsearch集群标签 配置Elasticsearch集群YML文件默认参数 为Elasticsearch集群绑定企业项目 替换Elasticsearch集群指定节点 更改Elasticsearch集群安全模式 切换Elasticsearch集群可用区 配置和使用Elasticsearch集群的自定义词库 配置Elasticsearch集群简繁体转换搜索 重启Elasticsearch集群 删除Elasticsearch集群 管理集群索引策略 使用Elasticsearch的ISM(Index State Management)插件创建和管理索引的生命周期策略,包括策略的创建、索引关联、以及策略的管理与变更,旨在优化集群性能和降低存储成本。 创建和管理Elasticsearch索引策略 监控与日志管理 CSS服务提供全面的监控和日志管理功能,包括集群和节点监控指标、告警规则配置、日志备份与采集,以及智能运维工具,帮助用户有效监控、分析和维护Elasticsearch集群,确保集群的稳定性和性能。 Elasticsearch集群支持的监控指标 配置Elasticsearch集群监控 设置Elasticsearch集群 SMN 告警通知 智能检测Elasticsearch集群风险 查询和管理Elasticsearch集群日志 审计日志 通过 云审计 服务,用户可以记录和查询Elasticsearch集群的关键操作事件,且操作记录在管理控制台保存最近7天,便于后续的审计和回溯。 查看Elasticsearch集群审计日志 父主题: 使用Elasticsearch搜索数据
  • 授权使用SMN服务 通过CSS服务的管理员账号登录云搜索服务管理控制台。 在左侧导航栏选择“服务授权”。 在服务授权页面,单击“创建SMN委托”,在弹窗中确认委托创建成功。 如果已经创建过委托,则右上角会提示“css_smn_agency exist, no need to created.”。 如果无创建权限,则右上角会提示“当前用户没有操作权限,请通过 IAM 检查账户权限!”,请确认该管理员账号是否配置了IAM使用权限。
  • 场景描述 云搜索服务默认安装了开源的OpenSearch告警插件(opensearch-alerting),用于提供数据满足特定条件时的通知功能。该插件包含Alerts、Monitors、Destinations三个组件,CSS服务在Destinations组件中适配了 消息通知 服务SMN,且仅支持通过SMN服务作为目的端(Destination)进行告警消息发送。 本文主要介绍如何在OpenSearch Dashboards中设置OpenSearch集群的SMN告警功能。 开源OpenSearch告警插件OpenSearch Alerting的官方指导文档请参见:Alerting - OpenSearch Documentation 。
  • 场景描述 通过切换冷热数据,可以将部分现查要求秒级返回的数据放在高性能机器上面作为热数据,对于历史数据要求分钟级别返回的数据放在大容量低规格节点作为冷数据。冷热数据切换可以减低存储成本,提升搜索效率。 图1 切换冷热数据原理 在创建集群时,启用的冷数据节点会被打上“cold”标签,用来存放冷数据,数据节点会被打上“hot”标签,用于存放热数据。用户可以通过配置指定索引,将数据分配到冷数据节点上。只有集群存在冷数据节点时,数据节点才会被打上热标签。 冷数据节点只有在创建集群时可以选择启用,已建集群不支持添加冷数据节点,如果集群没有冷数据节点又想切换冷热数据,可以使用存算分离功能,具体操作请参见配置Elasticsearch集群存算分离。 冷数据节点支持节点数量扩缩容和磁盘存储容量的扩容,具体操作请参见扩缩容Elasticsearch集群。
  • 代码示例 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 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)
  • 访问方式 表1 集群的访问方式 访问方式 适用场景 相关文档 Kibana(推荐方式) 图形化操作与展示。 监控实例。 管理数据。 不限制访问语言。 通过Kibana登录Elasticsearch集群 Cerebro 通过Cerebro登录Elasticsearch集群 开源Elasticsearch API 通过Curl命令访问与管理Elasticsearch集群。 通过Curl命令行接入Elasticsearch集群 Java客户端 通过Java语言访问与管理Elasticsearch集群。 建议使用对应Elasticsearch集群版本的Java客户端,否则可能存在兼容性问题。 通过Rest High Level Client接入Elasticsearch集群 通过Rest Low Level Client接入Elasticsearch集群 通过Transport Client接入Elasticsearch集群 通过Spring Boot接入Elasticsearch集群 Python客户端 通过Python语言访问与管理Elasticsearch集群。 通过Python客户端接入Elasticsearch集群 MRS Hive客户端 通过MRS的ES-Hadoop实现Hive工具访问与管理Elasticsearch集群。 通过MRS Hive客户端接入Elasticsearch集群 Go客户端 通过Go语言访问与管理Elasticsearch集群。 通过Go客户端接入Elasticsearch集群 LDAP认证 在Elasticsearch集群中配置轻量目录访问协议LDAP认证,实现相应角色的LDAP用户接入Elasticsearch集群。 通过LDAP接入Elasticsearch集群
  • 规划索引分片数 在使用集群的过程时,特别是在进行数据导入操作之前,建议根据具体的业务需求,提前对集群的数据结构和分布进行规划。这包括合理设计索引和确定分片数量。为了确保集群在性能和可扩展性方面达到最佳状态,以下是一些建议。 单个分片大小:建议将每个分片的大小控制在10GB到50GB之间。这有助于在存储效率和查询性能之间取得平衡。 集群总分片数量:为了管理方便和避免过度扩展,建议将集群的总分片数量控制在3万以内。这有助于保持集群的稳定性和响应速度。 内存与分片比例:在资源分配上,建议每1GB的内存空间放置20到30个分片。这样可以确保每个分片都有足够的内存资源进行索引和查询操作。 单节点分片数:为了避免单点过载,建议每个节点上的分片数量不超过1000个。这有助于避免节点资源竞争,确保节点的稳定运行。 索引分片与节点数的关系:对于单个索引,建议其分片数与集群的节点数保持一致,或者设置为节点数的整数倍。这有助于实现负载均衡,优化查询和索引的性能。 通过以上建议,可以更有效地规划和管理CSS集群的索引分片,从而提升集群的整体性能和可维护性。
  • 规划节点类型 在Elasticsearch集群中,合理规划不同节点类型对于优化性能和资源利用率至关重要。在创建集群时,应根据业务需求、查询负载、数据增长模式和性能目标来确定添加哪些类型的节点,以实现合适的集群性能和资源管理。表4是介绍了不同节点类型的适用场景,建议用户根据具体的业务需求和性能预期来选择是否启用该类节点。 如果创建集群时未启用Master节点或Client节点,当业务运行一段时间后,发现数据节点压力太大时,支持单独添加Master节点或Client节点,具体操作请参见添加Master或Client节点。 如果创建集群时未启用冷数据节点,则集群创建完成后不支持单独添加冷数据节点,请在创建集群时合理选择是否启用冷数据节点。 表4 各类节点的适用场景 节点类型 节点功能描述 适用场景 数据节点(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服务支持在非共享VPC和共享VPC内创建集群。 共享VPC和非共享VPC相比,有如下优势: 在一个账号内统一创建资源,并将资源共享给其他账号,其他账号无需创建重复资源,可以精简资源数量以及网络架构,提升管理效率并节约成本。 比如不同账号下的VPC网络互通需要建立对等连接,使用共享VPC后,则不同账号用户可以在同一个VPC创建资源,免去了对等连接配置,有效的简化组网结构。 在一个账号内统一管理运维资源,便于企业集中配置业务安全策略,并且利于对资源使用情况的监控和审计,支撑业务的安全诉求。 当选择使用共享VPC创建集群时,需要提前完成共享VPC子网的创建,操作流程请参见表8。有关共享VPC的使用限制及详细操作指导等信息可以参考共享VPC概述。 表8 共享子网创建流程说明 方法 说明 操作指导 方法A 通过 RAM 管理控制台,所有者创建共享,将子网共享给使用者。配置如下: 选择共享子网。 为共享子网选择权限,即指定使用者对该共享子网具备的权限。 CSS服务在共享VPC中创建集群需要选择权限:default vpc subnet statement。 指定共享子网的使用者,可以指定多个。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,子网共享成功。 如果后续使用者不再需要使用该共享子网,可以退出该共享。 使用者拒绝共享申请,子网共享失败。 创建共享 接受/拒绝共享邀请 退出共享 方法B 通过RAM管理控制台,所有者创建共享,将子网共享给使用者。配置如下: 选择共享子网。 为共享子网选择权限,即指定使用者对该共享子网具备的权限。 CSS服务在共享VPC中创建集群需要选择权限:default vpc subnet statement。 指定共享子网的使用者,可以指定多个。 通过VPC管理控制台,选择上一步中已创建的共享,将子网加入到该共享内。 共享创建完成后,通过RAM管理控制台,使用者可以选择接受或者拒绝共享申请。 使用者接受共享申请,子网共享成功。 如果后续使用者不再需要使用该共享子网,可以退出该共享。 使用者拒绝共享申请,子网共享失败。 创建共享 将VPC子网共享给其他账号 接受/拒绝共享邀请 退出共享
  • 规划节点数量 创建集群时,集群的节点数量应当基于业务性能需求和预期负载进行规划。表6提供了计算方式用以确定合适的节点数量。通过这个计算方式可以更科学地规划集群的节点数量,以满足业务需求并保证集群的性能和稳定性。 表6 节点数量的计算方式 节点 性能基线 节点数量计算方式 示例 写入节点 对于挂载云盘的节点,其单核写入性能基线为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个节点数。 说明: 这里计算的总节点数量表示数据节点和冷数据节点的数量之和。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,设置节点数量时可以参考表7。 表7 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 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:冷数据节点。
  • 规划集群安全模式 表9 集群类型介绍 集群类型 集群描述 适用场景 非安全集群 非安全模式的集群 非安全模式的集群无需安全认证即可访问,采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 适合内网业务,用于测试场景。 优点:简单,接入集群容易。 缺点:安全性差,任何人都可以访问集群。 安全集群 安全模式+HTTP协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 可以实现用户权限隔离,适用于对集群性能敏感的场景。 优点:访问集群需要安全认证,提升了集群安全性。通过HTTP协议访问集群又能保留集群的高性能。 缺点:无法公网访问集群。 安全模式+HTTPS协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTPS协议进行通信加密,使数据更安全。 有非常高的安全要求,且需要公网访问集群的场景。 优点:访问集群需要安全认证,提升了集群安全性,且HTTPS协议的通讯加密可以实现集群公网访问功能。 缺点:通过HTTPS协议访问集群,集群的读取性能相对HTTP协议来说,会下降20%左右。 当访问安全模式的集群时,需要输入用户名和密码通过安全认证才能访问。CSS服务支持以下两类用户的安全认证: 集群的管理员:管理员账户名默认为admin,密码为创建集群时设置的管理员密码。 集群的用户:集群的管理员通过Kibana创建集群的用户和密码。创建方式请参见创建Elasticsearch集群用户并授权使用。 当集群创建完成后,支持切换安全模式,具体操作请参见更改Elasticsearch集群安全模式。 切换安全模式包含三大场景:非安全模式切换为安全模式、安全模式切换为非安全模式、安全模式的协议切换。
  • 规划集群可用区 为防止数据丢失,并确保在服务中断情况下能降低集群的停机时间,从而增强集群的高可用性,CSS服务支持跨可用区(即多可用区)部署。用户可以在同一个区域内选择两个或三个不同的可用区进行集群部署。 在创建集群时,如果用户选择了两个或三个可用区,CSS服务将自动开启跨AZ的高可用性特性,确保节点在这些可用区内均匀分配。具体的节点分布情况,包括不同数量的节点如何在各个可用区中分布,可以参考表1。 在创建集群时,选择的任意类型的节点数量都要大于等于所选的AZ数量,否则跨可用区部署会失败。 部署跨AZ集群时,任意类型的节点都会被均匀的分布在不同的AZ上,满足各个AZ之间节点数量的差小于等于1。 当集群中数据节点和冷数据节点的数量和可用区的数量不是整数倍关系时,集群的数据会分布可能会不均匀,从而影响数据查询或写入业务。 表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 无业务中断时间。 当集群创建完成后,支持切换可用区,具体操作请参见切换Elasticsearch集群可用区。 切换可用区包含两大场景:可用区高可用改造和可用区平移切换。 可用区高可用改造:适用于单AZ改造成两AZ、单AZ改造成三AZ或两AZ改造成三AZ的场景,目的是为了提升集群的高可用性。 可用区平移切换:适用于从一个AZ完全迁移到另一个AZ的场景,目的是为了解决当前可用区资源不足的问题。
  • 规划集群版本 选择Elasticsearch集群版本时,建议综合考虑业务需求、特性支持、性能改进、安全性更新和长期支持等因素,以确保选择的版本能够满足当前和未来的业务发展,同时提供稳定和安全的运行环境。 当首次使用CSS服务的Elasticsearch集群时,建议选择最新版本。 当需要将自建或第三方Elasticsearch集群迁移到CSS服务,且仅迁移集群不改造集群时,建议版本号和源集群一致。 当需要将自建或第三方Elasticsearch集群迁移到CSS服务,且需要对集群进行代码改造时,建议选择7.10.2或7.6.2版本。 表3 集群版本支持情况 特性 Elasticsearch 7.6.2 Elasticsearch 7.10.2 相关文档 向量检索 √ √ 配置Elasticsearch集群向量检索 存算分离 √ √ 配置Elasticsearch集群存算分离 流量控制2.0 √ √ 配置Elasticsearch集群读写流量控制策略2.0 流量控制1.0 √ √ 配置Elasticsearch集群读写流量控制策略1.0 大查询隔离 √ √ 配置Elasticsearch集群大查询隔离 聚合增强 x √ 配置Elasticsearch集群聚合增强 读写分离 √ √ 配置Elasticsearch集群读写分离 切换冷热数据 √ √ 切换Elasticsearch集群冷热数据 索引回收站 x √ 配置Elasticsearch集群索引回收站 导入性能增强 x √ 增强Elasticsearch集群数据导入性能 集群内核监控增强 √ √ 配置Elasticsearch集群内核监控 索引监控 √ √ 配置Elasticsearch集群索引监控
  • 约束限制 重启过程中集群不可用,请谨慎操作。 工作中状态的集群,重启过程会主动停止Logstash进程。 当管道列表“是否保持常驻”为“否”时,重启过程中会将所有“运行中”的管道状态置为“已停止”。 当管道列表“是否保持常驻”为“是”时,重启过程中会触发Logstash进程恢复机制,将工作中的管道状态置为“恢复中”,如果十分钟内重新拉起Logstash进程,管道状态恢复为“工作中”,否则置为“失败”状态。
  • 规划集群安全模式 表8 集群类型介绍 集群类型 集群描述 适用场景 非安全集群 非安全模式的集群 非安全模式的集群无需安全认证即可访问,采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 适合内网业务,用于测试场景。 优点:简单,接入集群容易。 缺点:安全性差,任何人都可以访问集群。 安全集群 安全模式+HTTP协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 可以实现用户权限隔离,适用于对集群性能敏感的场景。 优点:访问集群需要安全认证,提升了集群安全性。通过HTTP协议访问集群又能保留集群的高性能。 缺点:无法公网访问集群。 安全模式+HTTPS协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTPS协议进行通信加密,使数据更安全。 有非常高的安全要求,且需要公网访问集群的场景。 优点:访问集群需要安全认证,提升了集群安全性,且HTTPS协议的通讯加密可以实现集群公网访问功能。 缺点:通过HTTPS协议访问集群,集群的读取性能相对HTTP协议来说,会下降20%左右。 当访问安全模式的集群时,需要输入用户名和密码通过安全认证才能访问。CSS服务支持以下两类用户的安全认证: 集群的管理员:管理员账户名默认为admin,密码为创建集群时设置的管理员密码。 集群的用户:集群的管理员通过Kibana创建集群的用户和密码。创建方式请参见创建OpenSearch集群用户并授权使用。 当集群创建完成后,支持切换安全模式,具体操作请参见更改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上,满足各个AZ之间节点数量的差小于等于1。 当集群中数据节点和冷数据节点的数量和可用区的数量不是整数倍关系时,集群的数据会分布可能会不均匀,从而影响数据查询或写入业务。 表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的场景,目的是为了解决当前可用区资源不足的问题。
  • 访问方式 表1 集群的访问方式 访问方式 适用场景 相关文档 OpenSearch Dashboards(推荐方式) 图形化操作与展示。 监控实例。 管理数据。 不限制访问语言。 通过OpenSearch Dashboards登录OpenSearch集群 Cerebro 通过Cerebro登录OpenSearch集群 开源Elasticsearch API 通过Curl命令访问与管理OpenSearch集群。 通过Curl命令行接入OpenSearch集群 LDAP认证 在OpenSearch集群中配置轻量目录访问协议LDAP认证,实现相应角色的LDAP用户接入OpenSearch集群。 通过LDAP接入OpenSearch集群
  • 场景介绍 简繁体转换插件是一款可以使中文简体和中文繁体相互转换的插件。通过该插件的转换,用户可以使用中文繁体关键字搜索出包含对应中文简体的索引数据,也可以使用中文简体关键字搜索出包含对应中文繁体的索引数据。 云搜索服务默认安装了简繁体转换插件,用户无需自行安装。 简繁体转换插件通常可以当做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所示。 表1 运算操作符列表 操作符 输入值 条件值 说明 StringIn String/String[] String[] values 检查输入值是否与任一条件值完全匹配 StringNotIn String/String[] String[] values 检查输入值是否与所有条件值都不匹配 StringStartsWith String/String[] String[] values 检查输入值是否与任一条件值前缀匹配 StringNotStartsWith String/String[] String[] values 检查输入值是否与所有条件值前缀都不匹配 StringEndsWith String/String[] String[] values 检查输入值是否与任一条件值后缀匹配 StringNotEndsWith String/String[] String[] values 检查输入值是否与所有条件值后缀都不匹配 NumberIn Number/Number[] Number[] values 检查输入值是否与任一条件值完全匹配 NumberNotIn Number/Number[] Number[] values 检查输入值是否与所有条件值都不匹配 NumberLessThan Number/Number[] Number value 检查输入值是否与小于条件值 NumberNotLessThan Number/Number[] Number value 检查输入值是否与不小于(大于或等于)条件值 NumberGreaterThan Number/Number[] Number value 检查输入值是否与大于条件值 NumberNotGreaterThan Number/Number[] Number value 检查输入值是否与不大于(小于或等于)条件值 NumberInRange Number/Number[] Number[][] values 检查输入值是否在任一条件范围值内 NumberNotInRange Number/Number[] Number[][] values 检查输入值是否不在任一条件范围值内 IsNull - 无 检查输入值是否为null或未定义 IsNotNull - 无 检查输入值是否不为null或未定义 IsTrue Boolean 无 检查输入值是否为true IsNotTrue Boolean 无 检查输入值是否不为true,即false
  • 匹配字段 过滤规则和事件匹配时,使用的匹配字段如表3所示。 表3 匹配字段列表 字段名 条件值类型 示例说明 source JSON对象数组 事件源,条件值位于JSON数组中,source字段只支持“StringIn” 示例: [{“op”: “StringIn”, “values”: [“HC.OBS”]}] type JSON对象数组 事件类型,条件值位于JSON数组中 示例: [{“op”: “StringIn”, “values”: [“object:put”]}] subject JSON对象数组 事件主体,条件值位于JSON数组中 示例: [{“op”: “StringEndsWith”, “values”: [“.jpg”]}] data JSON对象 事件数据,条件值位于JSON对象中,条件值为子匹配字段,支持最多5层嵌套结构 示例: {“state”: [{“op”: “StringIn”, “values”: [“running”]}]
  • 匹配规则 过滤规则和事件匹配时,需要遵循以下规则: 顶级匹配字段只支持source、type、subject、data。 顶级匹配必须包括source字段,且source只支持StringIn操作符。 data字段最多支持5个任意匹配字段,每个匹配字段最多嵌套5级。 每个匹配字段的匹配条件最多支持5个,多个匹配条件间是“或”的关系。 多个匹配字段间是“并且”的关系。 同一层级相同的匹配字段定义多次,则以最后一次为准。
  • 查看任务执行记录 采集任务执行完成之后支持查看任务执行记录,便于用户查看采集任务的执行情况。任务执行记录包括调度开始时间、调度结束时间、耗时等,同时,可通过下载日志查看执行采集任务的日志详情。 在采集任务列表单击任务操作列的“执行记录”。 在“执行记录”页面查看任务执行详情,包含状态、调度开始时间、调度结束时间、耗时等。 单击列表前面的,查看任务子流程的执行情况。 图2 查看任务子流程详情 单击“下载日志”,查看执行采集任务的日志详情。
共100000条