蓝鲸 CMDB 开放接口「查询业务」Search Business API 完全指南:参数详解、条件过滤与源码级原理
后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载本文聚焦蓝鲸智云配置平台bk-cmdb开放接口APIGateway open API中的「查询业务Search Business」接口完整讲解其请求参数、组合过滤条件biz_property_filter、分页与时间条件用法、响应结构并结合 toposerver 业务实例查询实现 与 apiserver 转发链路 剖析其底层原理与安全约束。读完本文你将能够独立构造查询业务的请求报文理解归档/非归档业务查询语义并掌握过滤条件在服务端如何被校验与转换为 MongoDB 查询。一、接口概览能力与使用场景search_business是蓝鲸 CMDB 向外部系统如 SaaS 应用、运维自动化平台开放的业务查询接口用于按业务属性如业务名称、运维人员、业务 ID检索业务列表。它在本仓库中的完整调用链为开放网关APIGateway将请求转发到 apiserverapiserver 通过 BizFilterChan 过滤器 把/biz/search/...路由转发到 toposerver 的/topo/v3/app/search见 service.go 路由注册根路径为/api/v3定义于 type.gotoposerver 的 SearchBusiness 处理请求校验参数 → 读取业务自定义属性 → 解析过滤条件 → 鉴权 → 调用BusinessOperation().FindBiz完成数据库查询。该接口支持按任意业务属性含用户自定义字段做多条件组合查询、按时间范围过滤、分页与排序是平台化资产盘点、业务权限对账等场景的基础能力。调用该接口需要具备业务查询权限Business Query Permission。二、请求参数全解析接口为 POST 请求请求体为 JSON。参数如下参数名类型必填说明bk_supplier_accountstring否开发商账号Supplier Accountfieldsarray否指定返回字段不填则返回业务全部字段conditiondict否业务任意属性的查询条件不填表示查询全部数据。该字段为历史遗留字段请勿继续使用推荐改用 biz_property_filterbiz_property_filterobject否业务属性组合查询条件time_conditionobject否按时间查询业务的条件pagedict否分页条件2.1 归档业务与非归档业务的查询语义业务分为非归档业务与归档业务两类二者在查询时的语义差异由服务端实现强制保证查询归档业务需在condition中增加bk_data_status: disabled条件查询非归档业务不要携带bk_data_status字段或显式添加bk_data_status: {$ne: disabled}服务端兜底逻辑在 SearchBusiness 实现 中当请求未显式传入bk_data_status时服务端会自动追加bk_data_status: {$ne: disabled}同时强制default 0即只返回普通业务、不返回资源池业务资源池业务的default值为 1。注意归档业务的查询依赖历史condition字段与下方biz_property_filter的限制两者不可同时生效需一并留意。2.2 关键约束biz_property_filter与condition只能有一个生效服务端在 SearchBusiness 入口 直接拒绝二者同时设置的请求返回参数非法错误CCErrCommParamsInvalid并明确提示不推荐继续使用conditionbiz_property_filter中涉及的数组元素个数不超过 500rules数量不超过 20嵌套层级不超过 3。这些数值并非文档随意约定而是硬编码于 querybuilder 常量MaxDeep 3、DefaultMaxSliceElementsCount 500、DefaultMaxConditionOrRulesCount 20服务端通过Validate(option)与GetDeep()双重校验强制实施。三、biz_property_filter业务属性组合过滤条件biz_property_filter是本接口推荐使用的组合查询条件结构上是一棵由聚合条件 规则数组递归组成的过滤树。3.1 结构定义biz_property_filter顶层为聚合条件名称类型必填说明conditionstring是聚合条件取值AND/ORrulesarray是聚合条件下的规则数组每个rules元素原子规则定义名称类型必填说明fieldstring是业务属性字段名operatorstring是操作符valueobject是操作值rules中的元素既可以是原子规则也可以是嵌套的聚合条件conditionrules由此形成最多 3 层即最多嵌套 2 层的过滤树。3.2 可用操作符根据 querybuilder 操作符文档 与 types.go 校验表operator支持以下取值通用equal、not_equal值为数值 / bool / 字符串数组in、not_in值为基本类型数组元素类型须一致数字less、less_or_equal、greater、greater_or_equal值为数值时间datetime_less、datetime_less_or_equal、datetime_greater、datetime_greater_or_equal值为 RFC3339 格式时间字符串字符串begins_with、not_begins_with、contains、not_contains、ends_with、not_ends_with值为非空字符串空值is_empty、is_not_empty字段状态exist、not_exist不接受参数3.3 服务端处理链路在 SearchBusiness 中biz_property_filter依次经过Validate(option)校验规则合法性、数组元素类型一致性、元素个数与规则数量上限GetDeep() querybuilder.MaxDeep校验嵌套深度不超过 3ToMgo()将过滤树转换为 MongoDB 查询条件替换原condition作为最终查询条件。这一套规则树 → 校验 → Mongo 条件的通用机制由 querybuilder 模块 提供AtomRule表示原子规则CombinedRule表示组合规则RuleParser负责从map[string]interface{}解析规则实例并已在 types_test.go 等测试中对深度超限等场景做了验证。3.4 组合过滤示例以下示例同时满足bk_biz_maintainer admin且bk_biz_name ∈ [test]或bk_biz_id 1{ biz_property_filter: { condition: AND, rules: [ { field: bk_biz_maintainer, operator: equal, value: admin }, { condition: OR, rules: [ { field: bk_biz_name, operator: in, value: [test] }, { field: bk_biz_id, operator: equal, value: 1 } ] } ] } }四、time_condition按时间范围查询time_condition用于按业务的时间字段如create_time做范围过滤结构与biz_property_filter类似字段类型必填说明operstring是操作符当前仅支持andrulesarray是时间查询条件数组rules中每个时间项包含field时间字段名、start起始时间、end截止时间。底层实现在 TimeCondition 结构体 与 MergeTimeCondition服务端校验oper必须为and、rules非空并将bk_created_at归一化为create_time、bk_updated_at归一化为last_time后合入查询条件。示例time_condition: { oper: and, rules: [ { field: create_time, start: 2021-05-13 01:00:00, end: 2021-05-14 01:00:00 } ] }五、page分页与排序名称类型必填说明startint是记录起始位置limitint是每页条数最大 200sortstring否排序字段字段前加-如sort: -field表示按该字段降序排列limit的上限与 BasePage 结构体 的校验逻辑一致start与limit不得小于 0limit超过系统最大页大小BKMaxPageSize时将直接报错。六、请求示例完整报文{ fields: [bk_biz_id, bk_biz_name], biz_property_filter: { condition: AND, rules: [ { field: bk_biz_maintainer, operator: equal, value: admin }, { condition: OR, rules: [ { field: bk_biz_name, operator: in, value: [test] }, { field: bk_biz_id, operator: equal, value: 1 } ] } ] }, time_condition: { oper: and, rules: [ { field: create_time, start: 2021-05-13 01:00:00, end: 2021-05-14 01:00:00 } ] }, page: { start: 0, limit: 10, sort: } }七、响应示例与字段说明成功响应{ result: true, code: 0, message: , permission: null, data: { count: 1, info: [ { bk_biz_id: 1, bk_biz_name: esb-test, default: 0 } ] } }响应通用字段名称类型说明resultbool请求是否成功true 成功false 失败codeint错误码0 表示成功0 表示失败messagestring请求失败时返回的错误信息dataobject返回数据permissionobject权限信息data字段名称类型说明countint记录总数infoarray业务实际数据info中系统内置属性字段名称类型说明bk_biz_idint业务 IDbk_biz_namestring业务名称bk_biz_maintainerstring运维人员bk_biz_productorstring产品人员bk_biz_developerstring开发人员bk_biz_testerstring测试人员time_zonestring时区languagestring语言1 中文2 英文bk_supplier_accountstring开发商账号create_timestring创建时间last_timestring更新时间defaultint业务类型operatorstring主要维护人life_cyclestring业务生命周期bk_created_atstring创建时间bk_updated_atstring更新时间bk_created_bystring创建者注意上表仅列出系统内置属性字段其余返回字段取决于用户自定义的业务属性。八、权限与数据安全源码级实现要点SearchBusiness在完成参数解析后还会执行两层安全收敛见 inst_business.go#L674-L744IAM 鉴权收敛当鉴权组件AuthManager.Enabled()开启时服务端调用ListAuthorizedResources获取当前用户被授权的业务资源。若用户拥有全部业务权限IsAny则按请求中的bk_biz_id收敛否则只允许查询已授权业务 ID 列表内的数据无权限时直接返回count: 0的空结果数据默认约束强制过滤归档业务bk_data_status ! disabled与资源池业务default 0避免外部系统误触数据边界。此外服务端还会调用 ReadModelAttr 读取业务模型的用户类型字段并通过 handleSpecialBusinessFieldSearchCond 对用户类字段做精确匹配正则转换保证人员字段的查询语义正确。九、常见问题排查建议biz_property_filter与condition同时传参请求会被直接拒绝condition and biz_property_filter cannot be set at the same time请只使用其中一种优先使用biz_property_filter过滤树过深/规则过多超过 3 层嵌套、500 个数组元素或 20 条规则上限时服务端返回参数非法错误请拆分查询或简化条件查询不到已归档业务默认查询只返回非归档业务如需归档业务请在condition中显式携带bk_data_status: disabled返回字段不符预期fields未指定时返回全部字段含用户自定义属性指定后仅返回所列字段部分字段如create_time只在显式查询时出现。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸配置平台 bk-cmdb 查询项目Search Project接口完全指南参数详解、过滤规则与源码实现蓝鲸配置平台 bk cmdb 查询项目Search Project接口完全指南参数详解、过滤规则与源码实现 本文围绕 bk cmdb蓝鲸智云配置平台开后端企业应用运维蓝鲸 CMDB 集群查询接口 search_set 实战指南参数详解、filter 过滤与源码实现蓝鲸 CMDB 集群查询接口 search_set 实战指南参数详解、filter 过滤与源码实现 导读 本文围绕蓝鲸智云配置平台BlueKing CMDB后端企业应用运维蓝鲸 CMDB 全量同步缓存条件查询接口 list_full_sync_cond_for_cache 使用详解蓝鲸 CMDB 全量同步缓存条件查询接口 list_full_sync_cond_for_cache 使用详解 本文面向需要在蓝鲸智云配置平台bk cmdb后端企业应用运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Vue集成bpmn.js实战:流程图渲染、XML同步与自定义扩展

Vue集成bpmn.js实战:流程图渲染、XML同步与自定义扩展

简介:本资源是一份面向前端开发者与流程系统初学者的 Vue.js 集成 bpmn.js 实战项目,聚焦业务流程图的可视化展示与基础交互编辑能力。项目完整封装了 BPMN 流程渲染器(Viewer)与建模器(Modeler)在 Vue 3 环…

2026/10/13 10:49:39 阅读更多 →
H3C设备桥接到物理口:三种场景配置与排障实战

H3C设备桥接到物理口:三种场景配置与排障实战

接了个需求:要把H3C设备上的逻辑桥接域打通到物理口。你可能觉得这不是什么大事,但真正动手的时候才发现,光是"桥接"这个词,在不同设备、不同软件版本、不同产品线里,含义完全不一样。有人要的是透明防火墙那…

2026/10/13 10:49:39 阅读更多 →
前端 Git 实用指南:分支策略、提交规范与团队协作提效

前端 Git 实用指南:分支策略、提交规范与团队协作提效

1. 项目概述1.1 为什么前端要单独聊 Git接触过不少前端开发者,发现一个普遍现象:很多人能熟练写组件、调接口、做动画,但一谈到 Git 就停留在add、commit、push三板斧。遇到冲突就慌,多分支协作就乱,history 记录惨不忍…

2026/10/13 10:49:39 阅读更多 →

最新新闻

鸽哒IM源码:生产级私有化即时通讯系统解析

鸽哒IM源码:生产级私有化即时通讯系统解析

简介:这是一套完整的跨平台即时通讯(IM)系统源码,面向中高级Java/Android/iOS开发者及全栈工程师,用于学习和搭建企业级实时通信服务。资源涵盖Web(WebSocketHTML5)、Android(JavaFC…

2026/10/13 21:08:58 阅读更多 →
Python+React低代码平台:元数据驱动的业务系统快速构建方案

Python+React低代码平台:元数据驱动的业务系统快速构建方案

简介:这是一套面向全栈开发初学者与低代码实践者的前后端一体化低代码平台学习资源,聚焦React前端框架与Python后端框架的协同开发模式,帮助非专业开发者快速构建可运行的Web应用,降低传统编码门槛。资源共229个文件,涵…

2026/10/13 21:08:58 阅读更多 →
2020数学建模B题沙漠穿越:Matlab动态规划与剪枝实战解析

2020数学建模B题沙漠穿越:Matlab动态规划与剪枝实战解析

简介:面向备战2020年数学建模B题的参赛者,完整Matlab源代码覆盖四关求解流程,从第一关基础路径规划到第四关随机天气下的最优策略,涉及距离矩阵处理、单目标优化、动态规划、数学期望与随机分布建模等方法。第二关重点解决双地图与…

2026/10/13 21:08:58 阅读更多 →
CEF4Delphi 控件:Delphi 与 JavaScript 双向通信及避坑指南

CEF4Delphi 控件:Delphi 与 JavaScript 双向通信及避坑指南

简介:CEF4Delphi控件是一套面向Delphi开发者的Chromium谷歌内核浏览器集成方案,适合需要在桌面程序中嵌入现代网页渲染能力的开发者,覆盖从Delphi 7到Delphi 10.2的多个版本,作者已亲自测试调试安装正常。资源包共462个文件&#…

2026/10/13 21:08:58 阅读更多 →
数据库大作业图书销售系统:核心是约束设计而不是页面数量

数据库大作业图书销售系统:核心是约束设计而不是页面数量

简介:面向数据库课程大作业的图书销售管理系统数据库设计文档,完整覆盖从问题描述、需求分析、概念模型设计、逻辑模型设计到建立数据库、录入数据及数据库操作的全过程,并配有全局与局部ER图、表结构、外键关系说明,以及实施中遇…

2026/10/13 21:08:58 阅读更多 →
Java 8 Stream 实战指南:从传统循环到声明式流水线

Java 8 Stream 实战指南:从传统循环到声明式流水线

如果你写过几年 Java 业务代码,大概率见过这类场景:一个方法里塞了三四个 for 循环,循环里面套 if,if 里面再往 List 或 Map 里 put 数据,看完要花好几分钟才理清楚这段逻辑到底在干嘛。这种代码不能说错,但…

2026/10/13 21:07:57 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →