1.12. 搜索查询 API
搜索查询 API 不是 Kubernetes API,因此无法通过 Red Hat OpenShift Container Platform API Explorer 显示。继续阅读以了解搜索查询 API 功能。
1.12.1. 概述 复制链接链接已复制到粘贴板!
您可以使用路由公开搜索查询 API,并使用 API 解析搜索查询。API 是一个 GraphQL 端点。您可以使用任何客户端,如 curl 或 Postman。
1.12.1.1. 版本信息 复制链接链接已复制到粘贴板!
版本 : 2.10.0
1.12.1.2. URI scheme 复制链接链接已复制到粘贴板!
basePath : /searchapi/graphql
Schemes : HTTPS
1.12.1.3. 配置 API 访问 复制链接链接已复制到粘贴板!
使用以下命令,创建路由以访问集群外部的搜索 API:
oc create route passthrough search-api --service=search-search-api -n open-cluster-management
重要: 您必须配置路由来保护您的环境。如需了解更多详细信息,请参阅 OpenShift Container Platform 文档中的 Route 配置。
1.12.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.12.2.1. 查询输入的描述表 复制链接链接已复制到粘贴板!
| 类型 | 描述 | 属性 |
|---|---|---|
| SearchFilter | 定义用于过滤结果的键和值。当您为属性提供多个值时,API 会将值解释为"OR"操作。当您提供多个过滤器时,结果会匹配所有过滤器,API 会解释为"AND"操作。 | string |
| SearchInput | 输入关键字以接收资源列表。当您提供许多关键字时,API 会将它解析为"AND"操作。 | 字符串 |
| limit |
确定输入查询后返回的最大结果数。默认值为 | 整数 |
1.12.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.12.3. 通用模式 复制链接链接已复制到粘贴板!
type Query {
search(input: [SearchInput]): [SearchResult]
searchComplete(property: String!, query: SearchInput, limit: Int): [String]
searchSchema: Map
messages: [Message]
}
1.12.4. 支持的查询 复制链接链接已复制到粘贴板!
继续读取以查看 JSON 格式支持的查询类型。
1.12.4.1. 搜索部署 复制链接链接已复制到粘贴板!
query:
query mySearch($input: [SearchInput]) {
search(input: $input) {
items
}
}
变量:
{"input":[
{
"keywords":[],
"filters":[
{"property":"kind","values":["Deployment"]}],
"limit":10
}
]}
1.12.4.2. 搜索 pod 复制链接链接已复制到粘贴板!
query:
query mySearch($input: [SearchInput]) {
search(input: $input) {
items
}
}
变量:
{"input":[
{
"keywords":[],
"filters":[
{"property":"kind","values":["Pod"]}],
"limit":10
}
]}