1.13. 搜索查询 API
搜索查询 API 不是 Kubernetes API,因此不会通过 Red Hat OpenShift Container Platform API Explorer 显示。继续阅读以了解搜索查询 API 功能。
1.13.1. 概述
您可以使用路由公开搜索查询 API,并使用 API 解析搜索查询。API 是一个 GraphQL 端点。您可以使用任何客户端,如 curl 或 Postman。
1.13.1.1. 版本信息
版本 : 2.10.0
1.13.1.2. URI scheme
BasePath : /searchapi/graphql
Schemes : HTTPS
1.13.1.3. 配置 API 访问
使用以下命令,创建一个路由,从集群外部访问搜索 API:
oc create route passthrough search-api --service=search-search-api -n open-cluster-management
重要: 您必须配置路由来保护您的环境。如需了解更多详细信息,请参阅 OpenShift Container Platform 文档中的路由配置。https://docs.redhat.com/documentation/en-us/openshift_container_platform/4.15/html-single/networking/index#route-configuration
1.13.2. 架构设计
input SearchFilter { property: String! values: [String]! } input SearchInput { keywords: [String] filters: [SearchFilter] limit: Int relatedKinds: [String] } type SearchResult { count: Int items: [Map] related: [SearchRelatedResult] } type SearchRelatedResult { kind: String! count: Int items: [Map] }
参数带有 !
表示需要该字段。
1.13.2.1. 查询输入的描述表
类型 | 描述 | 属性 |
---|---|---|
SearchFilter | 定义用于过滤结果的键和值。当您为属性提供多个值时,API 会将值解析为 "OR" 操作。当您提供多个过滤器时,结果会匹配所有过滤器,API 则解析为"AND"操作。 | string |
SearchInput | 输入关键字以接收资源列表。当您提供多个关键字时,API 会将其解释为"AND"操作。 | 字符串 |
limit |
确定输入查询后返回的最大结果数。默认值为 | 整数 |
1.13.2.2. 模式示例
{ "query": "type SearchResult {count: Intitems: [Map]related: [SearchRelatedResult]} type SearchRelatedResult {kind: String!count: Intitems: [Map]}", "variables": { "input": [ { "keywords": [], "filters": [ { "property": "kind", "values": [ "Deployment" ] } ], "limit": 10 } ] } }
1.13.3. 通用模式
type Query { search(input: [SearchInput]): [SearchResult] searchComplete(property: String!, query: SearchInput, limit: Int): [String] searchSchema: Map messages: [Message] }
1.13.4. 支持的查询
继续读取以查看 JSON 格式支持的查询类型。
1.13.4.1. 搜索部署
query:
query mySearch($input: [SearchInput]) { search(input: $input) { items } }
变量:
{"input":[ { "keywords":[], "filters":[ {"property":"kind","values":["Deployment"]}], "limit":10 } ]}
1.13.4.2. 搜索 pod
query:
query mySearch($input: [SearchInput]) { search(input: $input) { items } }
变量:
{"input":[ { "keywords":[], "filters":[ {"property":"kind","values":["Pod"]}], "limit":10 } ]}