华为云云搜索服务CSS对接使用全指南:从集群创建到生产级实践

apphuang2026年07月11日 17:45:118

引言:为什么选择华为云云搜索服务

在数字化浪潮席卷各行各业的今天,数据的价值已不再局限于存储本身,而在于如何被快速检索、深度分析与实时洞察。无论是电商平台的商品搜索、日志系统的实时监控、还是企业知识库的语义检索,搜索引擎都是支撑这些业务场景的核心基础设施。华为云云搜索服务(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内以节省公网流量费用。

相关文章

GPU云服务器租用哪家最便宜,首选我们!

GPU云服务器租用哪家最便宜,首选我们!

我们非常荣幸向您推荐我们的GPU云服务器产品!我们是一家华为云,腾讯云和阿里云的代理商,所以我们可以提供价格更加便宜的GPU云服务器,同时还能保证服务质量和折扣力度。我们相信,无论是个人、企业、国有机…

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

很多朋友都在吐槽:“华为云服务器太贵了,预算有限实在买不起!” 其实,买华为云服务器贵不贵,关键看你会不会选、会不会买。今天就来给大家分享一套超实用的省钱攻略,小公司、创业团队也能轻松用得起稳定又安全…

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

最近不少做 IT 运维或企业采购的朋友跟我吐槽,公司要上华为云服务器,去官网一看报价直接犯了难 —— 按年付费算下来,比预期预算高出不少。要是赶上业务扩张需要多台服务器,这笔开支更是让财务部门直皱眉。…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

上海汪远信息科技有限所在公司年销华为云产品3亿+,属于头部代理梯队,可为合作客户提供最高30%的返佣优惠,直接帮助企业降低30%的云资源成本。…

华为云代理商有哪些?华为云代理返点是真的么?

华为云代理商有哪些?华为云代理返点是真的么?

一,华为云代理商简介华为云代理商,顾名思义就是替华为云做华为云服务器数据库等公有云产品推广的代理商,每推广出一单华为云服务器,华为云会跟这个代理商结算佣金,佣金比例分为月度佣金,季度佣金和年度佣金,华…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

一、华为云代理商的核心价值定位1. 代理商的角色与职责华为云代理商作为华为云生态的核心合作伙伴,承担着三重核心职能:•产品推广销售:负责推广销售华为云全系列云产品,包括云服务器ECS、云数据…