华为云云搜索服务CSS对接使用全指南:从集群创建到生产级实践
引言:为什么选择华为云云搜索服务
在数字化浪潮席卷各行各业的今天,数据的价值已不再局限于存储本身,而在于如何被快速检索、深度分析与实时洞察。无论是电商平台的商品搜索、日志系统的实时监控、还是企业知识库的语义检索,搜索引擎都是支撑这些业务场景的核心基础设施。华为云云搜索服务(Cloud Search Service,简称CSS)应运而生——它是一项完全托管的分布式搜索引擎服务,基于开源Elasticsearch生态构建,同时兼容OpenSearch引擎,为用户提供开箱即用的搜索与分析能力。
相比自建Elasticsearch集群,CSS服务将运维复杂性降到了最低——集群部署、节点管理、数据备份、版本升级等繁琐工作均由华为云平台承担,用户只需聚焦于业务数据本身。更值得一提的是,CSS与华为云生态深度整合,可与对象存储OBS、数据治理中心DataArts Studio、数据复制服务DRS等产品无缝协同,形成从数据采集、存储到检索分析的全链路解决方案。本文将从零开始,系统讲解CSS服务的对接与使用全流程,涵盖集群创建、数据导入、索引管理、安全配置、性能优化等核心环节,并提供大量可执行的代码示例,帮助读者将CSS快速落地到实际项目中。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
第一章:CSS服务概述与核心概念
1.1 什么是云搜索服务
华为云云搜索服务CSS是一个基于Elasticsearch且完全托管的在线分布式搜索服务。它兼容开源Elasticsearch搜索引擎,支持结构化、非结构化文本的多条件检索、统计和报表。CSS服务提供Elasticsearch和OpenSearch两种引擎选项:Elasticsearch引擎目前支持7.6.2和7.10.2版本,OpenSearch引擎支持1.3.6、2.17.1、2.19.0和3.4.0版本,Logstash支持7.10.0版本。
CSS服务的核心产品组件包括Elasticsearch/OpenSearch集群、Kibana可视化工具和Cerebro集群监控工具。Kibana作为Elasticsearch官方提供的可视化分析平台,CSS集群默认集成开箱即用的Kibana工具,无需安装部署即可一键启动。Cerebro则提供了集群管理的可视化界面,方便用户查看集群健康状态、节点信息和索引分布。
1.2 典型应用场景
CSS服务适用于多种业务场景:
- 日志分析:利用Filebeat采集ECS中的日志,发送到Logstash进行数据处理,再存储到CSS中,最后通过Kibana进行日志的可视化查询与分析。
- 商品搜索与全文检索:为电商、内容平台等提供高性能的全文检索服务,替代传统数据库的低效模糊查询。
- 实时数据分析:对实时写入的数据进行聚合统计和趋势分析。
- 向量检索:CSS自主研发的向量搜索引擎利用Elasticsearch插件架构深度集成,满足高性能、高精度和多模态的高维向量检索需求。
第二章:CSS集群的创建与规划
2.1 集群创建方式
创建Elasticsearch集群有两种方式:方式一通过云搜索服务管理控制台创建,适合初次使用和日常运维;方式二通过云搜索服务提供的API接口创建,适合自动化部署和基础设施即代码场景。本文重点介绍控制台方式。
2.2 控制台创建集群
登录云搜索服务管理控制台后,在左侧导航栏选择“集群管理 > Elasticsearch”,点击右上角“创建集群”,默认进入新版创建页面。
集群配置阶段需要确定:集群类型(Elasticsearch或OpenSearch)和集群版本(以界面实际可选项为准)。
基础配置阶段需选择:
- 区域:选择靠近您业务的区域以减少网络延迟,不同区域的云服务产品之间内网互不相通。
- 可用区:建议选择多可用区部署以提升集群高可用性。
- 计费模式:按需计费适合测试和短期项目,包年包月适合长期稳定运行的生产环境。
节点配置是集群规划的核心:
- 数据节点:当集群配置了Master节点时,数据节点数量支持1~200个;未配置Master节点时支持1~32个。建议数据节点数量大于或等于3个以提升集群可用性。
- Master节点:负责集群管理和协调,建议生产环境配置3个专用Master节点。
- Client节点:负责处理外部请求和负载均衡,适用于高并发查询场景。
- 存储容量:根据数据量预估合理规划,支持超高IO和通用SSD等多种磁盘类型。
网络配置需指定虚拟私有云VPC、子网和安全组。VPC与子网决定了集群的网络隔离范围,安全组则控制入站和出站流量规则。创建集群前需确保已参考Elasticsearch集群规划建议完成待创建集群的规模、节点配置、存储容量等规划。
安全模式:CSS集群支持开启安全模式,开启后访问集群需要用户名和密码认证,并支持HTTPS加密传输。生产环境强烈建议开启安全模式。
2.3 集群创建后的网络连通性
集群创建成功后,在集群管理列表页面可以查看集群的“内网访问地址”。当集群只有一个节点时,显示为单个节点的IP和端口,例如“10.62.179.32:9200”;当集群有多个节点时,显示所有节点的IP和端口,例如“10.62.179.32:9200,10.62.179.33:9200”。访问CSS集群的客户端(如ECS、CDM、DataArts Studio等)必须与CSS集群在同一个VPC内才能通过内网地址访问。
第三章:接入CSS集群的多种方式
3.1 通过Curl命令直接访问
当CSS集群和弹性云服务器ECS在同一个VPC内时,可以在ECS上通过Curl命令直接访问Elasticsearch集群。此方法多用于前期调试Elasticsearch的连接性和排查网络连通问题。例如:
curl -X GET "http://10.62.179.32:9200/_cat/indices?v"3.2 通过Kibana访问集群
CSS服务的Elasticsearch集群默认集成Kibana工具。在集群列表页面,单击目标集群操作列的“Kibana”即可一键登录。登录后可在Kibana左侧导航栏选择“Dev Tools”进入命令执行页面。在Dev Tools中,可以直接执行Elasticsearch的REST API命令,例如查看索引列表:
GET _cat/indices?v对于需要自建Kibana对接CSS的场景,需注意只有OSS版本的Kibana镜像支持对接CSS服务的Elasticsearch集群。操作要点包括:创建与CSS集群在同一VPC的ECS、安全组开放5601端口、ECS绑定弹性公网IP。然后在ECS上安装Kibana并修改配置文件kibana.yml:
server.port: 5601
server.host: 192.168.xxx.xxx
elasticsearch.hosts: http://10.0.0.xxx:9200安全集群的配置还需添加用户名、密码及安全插件相关配置。
3.3 通过Cerebro管理集群
Cerebro是Elasticsearch的集群管理可视化工具。在集群列表中选择目标集群,单击操作列的“更多 > Cerebro”即可进入Cerebro登录页面。Cerebro提供集群健康状态监控、节点信息查看、索引管理等功能,是日常运维的得力助手。
第四章:数据导入——将业务数据接入CSS
4.1 使用CDM云数据迁移服务导入
云数据迁移CDM是华为云提供的数据集成服务,支持通过向导式界面将存储在Oracle数据库或对象存储服务OBS中的数据导入到Elasticsearch集群中,数据文件支持JSON格式。
支持的源数据类型:
- 本地或第三方Oracle数据库 → CSS Elasticsearch 5.5、6.2、6.5、7.1、7.6、7.9、7.10版本
- OBS桶中的JSON数据 → CSS Elasticsearch 5.5、6.2、6.5、7.1、7.6、7.9、7.10版本
准备工作:确认源数据格式——Elasticsearch版本大于或等于7.x的数据格式为:
{"index": {"_index":"my_store"}}
{"productName": "2019秋装新款文艺衬衫女装","size": "M"}Elasticsearch版本小于7.x的数据需包含_type字段:
{"index": {"_index":"my_store","_type":"products"}}
{"productName": "2019秋装新款文艺衬衫女装","size": "M"}配置CDM作业时需填写CSS集群的Elasticsearch服务器列表,格式为“ip:port”,多个地址之间使用“;”分隔,例如“192.168.0.1:9200;192.168.0.2:9200”。如果CSS集群开启了安全模式,还需配置用户名、密码及HTTPS访问。
4.2 使用Logstash同步数据
华为云CSS服务推荐使用Logstash进行数据导入。Logstash作为ELK生态的核心组件,支持从多种数据源(如MySQL、PostgreSQL、Kafka、文件等)采集数据,经过过滤转换后写入CSS集群。用户可以在ECS上自建Logstash,也可以使用华为云提供的Logstash服务。一个典型的Logstash配置文件如下:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "root"
jdbc_password => "password"
statement => "SELECT * FROM products"
}
}
output {
elasticsearch {
hosts => ["10.62.179.32:9200"]
index => "products"
user => "admin"
password => "password"
}
}4.3 使用Reindex API实现集群间迁移
Elasticsearch提供了Reindex API以支持集群间的索引数据迁移。CSS服务同样支持利用Reindex API实现Elasticsearch集群间的数据迁移。该方案适用于将自建Elasticsearch或第三方云Elasticsearch的数据迁移到华为云CSS。基本用法如下:
POST _reindex
{
"source": {
"remote": {
"host": "http://source-cluster:9200"
},
"index": "source_index"
},
"dest": {
"index": "target_index"
}
}4.4 使用读写分离插件实现近实时同步
7.6.2和7.10.2版本的华为云Elasticsearch集群默认安装了CSS服务的读写分离插件。通过配置读写分离可以实现Elasticsearch集群间的索引数据的近实时同步。该方案仅适用于源集群和目标集群都是CSS服务的集群,适用于跨地域或跨账号迁移、集群合并等场景。同步周期默认为30秒,支持修改。由于读写分离通过底层文件复制实现数据同步,绕开了Elasticsearch的外部读写API,对源集群的性能影响被降至最低。
4.5 通过DataArts Studio数据开发节点导入
华为云数据治理中心DataArts Studio提供了CSS节点,通过该节点可以执行云搜索请求实现在线分布式搜索功能。在DataArts Studio的数据开发模块中,选择CloudSearch集群(已在CSS服务中创建好),目前仅支持使用5.5.1版本的集群。这种方式适合将数据集成、数据开发和数据搜索统一编排在DataArts Studio的工作流中。
第五章:索引管理与数据操作
5.1 创建索引
索引是Elasticsearch中存储数据的逻辑单元,类似于关系型数据库中的表。在Kibana的Dev Tools中执行以下命令创建索引并指定映射:
PUT /demo
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"productName": {
"type": "text",
"analyzer": "ik_smart"
},
"size": {
"type": "keyword"
},
"price": {
"type": "float"
},
"createTime": {
"type": "date"
}
}
}
}对于Elasticsearch版本小于7.x的命令格式略有不同,需要在mappings下指定type名称。
5.2 导入数据
数据导入可以通过多种方式完成:
方式一:在Kibana中使用开源Elasticsearch API批量导入
POST /demo/_bulk
{"index": {"_id": "1"}}
{"productName": "2019秋装新款文艺衬衫女装", "size": "M", "price": 299.00}
{"index": {"_id": "2"}}
{"productName": "2020春装新款休闲裤女", "size": "L", "price": 199.00}方式二:通过Python SDK批量写入(详见第六章)
方式三:通过Logstash或CDM等数据集成工具导入
5.3 搜索数据
在CSS集群中可以进行全文检索和聚合结果显示。以下是一个简单的搜索示例:
GET /demo/_search
{
"query": {
"match": {
"productName": "衬衫"
}
},
"sort": [
{"price": {"order": "asc"}}
]
}5.4 删除索引
当不再使用对应的索引数据时,可以删除对应索引以节约资源:
DELETE /demo第六章:通过华为云SDK对接CSS
6.1 SDK概述
华为云提供了云搜索CSS的SDK,您可以直接集成SDK来调用CSS的相关API,从而实现对CSS的快速操作。CSS支持的SDK包括Python、Java、Go等多种语言。
6.2 Python SDK安装与配置
安装SDK:
pip install huaweicloudsdkcss前置条件:
- 拥有华为云账号及Access Key(AK)和Secret Access Key(SK),在华为云控制台“我的凭证 > 访问密钥”页面创建和查看
- 具备Python 3及以上版本的开发环境
6.3 Python SDK调用示例
以下示例演示如何通过Python SDK实现集群的滚动重启:
import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcss.v1 import CssClient, CssRegion
from huaweicloudsdkcss.v1.model import RollingRestartRequest, RollingRestartReq
from huaweicloudsdkcore.exceptions import exceptions
class RollingRestartServiceDemo:
@staticmethod
def main():
# 认证用的ak和sk建议在环境变量中密文存放,使用时解密,确保安全
ak = os.environ["HUAWEICLOUD_SDK_AK"]
sk = os.environ["HUAWEICLOUD_SDK_SK"]
auth = BasicCredentials(ak=ak, sk=sk)
client = CssClient.new_builder() \
.with_credentials(auth) \
.with_region(CssRegion.value_of("cn-north-4")) \
.build()
request = RollingRestartRequest()
body = RollingRestartReq()
body.type = "role"
body.value = "ess"
request.cluster_id = "{cluster_id}"
request.body = body
try:
response = client.rolling_restart(request)
print(response)
except exceptions.ConnectionException as e:
print(e)
except exceptions.RequestTimeoutException as e:
print(e)
except exceptions.ServiceResponseException as e:
print(e)
print(e.status_code)
print(e.error_code)
print(e.error_msg)
if __name__ == "__main__":
RollingRestartServiceDemo.main()6.4 通过SDK管理集群
除了滚动重启,CSS SDK还支持集群的创建、查询、删除、扩容等操作。以下是通过SDK查询集群列表的示例:
from huaweicloudsdkcss.v1.model import ListClustersRequest
def list_clusters(client):
request = ListClustersRequest()
request.limit = 10
request.offset = 0
response = client.list_clusters(request)
return response第七章:Kibana可视化与数据分析
7.1 创建索引模式
在Kibana中进行数据可视化之前,需要先创建索引模式:
- 在Kibana页面点击左上角菜单图标,选择“Management > Stack Management”
- 选择“Index Patterns”,点击“Create index pattern”
- 在“Index pattern name”中输入索引名称前缀(如“demo*”)
- 单击“Next step”,在“Time field”下拉框中选择时间字段(如“createTime”)
- 单击“Create index pattern”完成创建
7.2 Discover数据探索
通过Kibana的Discover页面,可以快速创建索引模式并基于时间字段对Elasticsearch中的时序数据进行可视化展示与查询。典型场景包括日志分析、业务监控和数据探索。操作步骤:
- 登录Kibana,点击左上角菜单图标选择“Kibana > Discover”
- 在“Index patterns”下拉框中选择已创建的索引模式
- 在时间选择器中选择合适的时间范围
- 通过KQL(Kibana Query Language)进行数据过滤和搜索
7.3 Dashboard仪表盘
Kibana提供丰富的仪表盘构建能力和可视化工具,支持超过10种数据呈现模式。用户可以将多个可视化图表组合到同一个仪表盘中,实现业务数据的全景监控。CSS服务兼容Kibana可视化与Elasticsearch的统计和分析能力。
第八章:安全配置与权限管理
8.1 安全模式认证
CSS集群在创建时可以开启“安全模式”。开启后访问集群需要用户名和密码认证,并支持HTTPS加密访问。在通过客户端(如CDM、Logstash、SDK)连接开启安全模式的集群时,必须正确配置用户名和密码。
8.2 IAM权限控制
华为云统一身份认证服务IAM支持对CSS服务进行精细的权限管理。通过IAM角色或策略,可以授予用户不同级别的CSS操作权限。例如“CSS ReadOnlyAccess”策略仅允许用户查看集群信息而无法创建或修改集群。最佳实践是使用IAM子账号进行日常操作,避免使用主账号密钥。
8.3 企业项目管理
CSS支持为企业项目绑定Elasticsearch集群。企业项目可以帮助企业按部门或项目维度对资源进行分组和管理,实现资源的逻辑隔离和成本分摊。在“资源”页签下选择“云搜索服务 CSS”即可筛选出对应的CSS集群。
第九章:性能优化与成本控制
9.1 集群性能优化
节点规格选择:根据业务负载选择合适的节点规格。计算密集型场景(如复杂聚合查询)选择高配CPU;存储密集型场景(如日志存储)选择大容量磁盘。
分片规划:合理设置索引的分片数(number_of_shards)和副本数(number_of_replicas)。分片数不宜过多(通常每个节点20个分片以内),副本数建议至少为1以保证高可用。
读写分离:对于读写压力较大的场景,可以通过CSS的读写分离插件将写入和读取操作分离到不同的集群,降低相互影响。
9.2 成本优化策略
内网访问免流量:当CSS集群和弹性云服务器ECS在同一个VPC内时,内网访问不产生流量费用。建议将业务应用部署在与CSS集群相同的VPC中。
存储类型选择:根据数据访问频率选择不同的存储类型。热数据使用超高IO磁盘保证查询性能;冷数据可以使用普通IO磁盘降低成本。
生命周期管理:通过索引生命周期管理ILM自动将老旧索引迁移到低成本的节点或直接删除,避免存储空间无限增长。
第十章:常见问题与排障指南
10.1 网络连通性问题
如果客户端无法访问CSS集群,首先确认客户端与CSS集群是否在同一个VPC内。其次检查安全组规则是否放行了所需的端口(默认9200)。如果跨VPC访问,需要配置VPC对等连接。
10.2 认证失败问题
开启安全模式的集群在访问时如果出现认证失败,检查用户名和密码是否正确。通过IAM获取的Token有效期为24小时,需要定期刷新。
10.3 集群状态异常
通过Cerebro或Kibana监控集群健康状态。如果集群状态为“red”,表示有主分片未分配;状态为“yellow”表示有副本分片未分配。通常需要检查节点资源(磁盘空间、内存)是否充足。
结语
华为云云搜索服务CSS凭借其全托管、高可用、生态兼容等特性,为企业提供了开箱即用的搜索与分析能力。从集群创建、数据导入、索引管理到可视化分析,CSS覆盖了搜索场景的全生命周期。通过本文的系统讲解与代码示例,相信读者已经掌握了CSS对接使用的核心技能。在实际生产中,建议从小规模试点开始,逐步扩大集群规模并优化配置,让CSS服务真正成为业务增长的加速器。
常见问题问答
问1:CSS服务和自建Elasticsearch有什么区别?
答:CSS是华为云完全托管的分布式搜索引擎服务,用户无需关心底层集群的部署、运维、升级和扩容。自建Elasticsearch则需要自行管理所有基础设施和软件运维。CSS与开源Elasticsearch完全兼容,API和插件使用方式一致,迁移成本极低。
问2:CSS集群创建后如何获取访问地址?
答:在云搜索服务管理控制台的“集群管理”页面,选择目标集群,在“内网访问地址”列即可查看集群的IP地址和端口,格式为“
问3:如何将自建Elasticsearch的数据迁移到CSS?
答:推荐三种方式:一是使用Reindex API进行在线迁移;二是通过华为云CDM云数据迁移服务导入;三是使用Logstash进行数据同步。对于7.6.2和7.10.2版本的集群,还可以使用读写分离插件实现近实时同步。
问4:CSS支持向量检索吗?
答:支持。CSS自主研发了向量搜索引擎,并利用Elasticsearch的插件架构进行了深度集成,提供高性能、高精度和多模态的高维向量检索能力。
问5:CSS集群如何保障数据安全?
答:CSS支持安全模式认证(用户名/密码 + HTTPS加密)、IAM权限控制、VPC网络隔离、以及集群快照备份等多层次安全防护机制。
问6:CSS的计费方式是怎样的?
答:CSS支持按需计费和包年包月两种模式。费用主要包括节点规格费用、存储费用和公网流量费用。如果启用自动创建集群快照,快照存储在OBS标准存储中会产生额外费用。建议将业务应用与CSS部署在同一VPC内以节省公网流量费用。




