Skip to main content

🔍 搜索和查询

Port 的应用程序接口(API)提供了轻松查询、搜索和过滤软件目录数据的工具。

💡 常用查询 Usage

要有效跟踪软件目录中的资产,高质量的搜索是必不可少的,而使用 Port 的搜索功能则可以做到这一点:

  • 查找所有不健康的运行服务;
  • 列出存在已知漏洞的所有库;
  • 获取特定集群中运行的所有服务;
  • 等等。

搜索请求

基本搜索路由是 "https://api.getport.io/v1/entities/search",它接收 HTTP POST 请求。

搜索请求定义了不同搜索规则之间的逻辑关系,并包含用于查找合适实体的过滤器和规则。 每个搜索请求都由一个 JSON 对象表示,如下例所示:

{
"combinator": "and",
"rules": [
{
"property": "$blueprint",
"operator": "=",
"value": "myBlueprint"
},
{
"property": "$identifier",
"operator": "contains",
"value": "myIdentifierPart"
}
]
}

上述查询会从 myBlueprint 蓝图中搜索其 identifier 包含字符串 myIdentifierPart 的所有实体。

搜索请求要素

FieldDescription
combinatorDefines the logical operation to apply to the query rules
rulesAn array of search rules to filter results with

Combinator

有两个可用的组合器: and/or:

  • and - 将在所有规则之间应用逻辑 AND 运算,要求所有规则都满足给定资产的条件才能返回;
  • 或"--将在所有规则之间应用逻辑 OR 运算,要求至少有一条规则满足给定资产的要求,才能返回该资产。
单规则查询 如果查询中只有一条规则,则组合器没有任何作用。 但请记住,为了遵循查询结构,仍需将其包含在内。
Single rule query example

在下面的示例中,"rules "数组中只出现了一条规则,因此 "combinator "字段没有任何作用:

{
"combinator": "and",
"rules": [
{
"property": "$blueprint",
"operator": "=",
"value": "myBlueprint"
}
]
}
{
"combinator": "and",
"rules": [
{
"property": "$blueprint",
"operator": "=",
"value": "myBlueprint"
},
{
"property": "$identifier",
"operator": "contains",
"value": "myIdentifierPart"
}
]
}

规则

搜索规则是一个小型过滤单元,用于控制搜索输出。

下面是一个搜索规则示例:

{
"property": "$blueprint",
"operator": "=",
"value": "microservice"
}

Port 有 2 种搜索规则操作符:

  1. 比较运算符(= >等);
  2. 关系运算符(relatedTo 等)。

比较和运算符

结构

FieldDescription
operatorSearch operator to use when evaluating this rule, see a list of available operators below
propertyProperty to filter by according to its value. It can be a meta-property such as $identifier, or one of the standard properties
valueThe value to filter by

操作员

操作符 = 检查指定值是否完全匹配:

{
"operator": "=",
"property": "myProperty",
"value": "myExactValue"
}

###关系结构和操作符

结构

FieldDescription
operatorSearch operator to use when evaluating this rule, see a list of available operators below
blueprintBlueprint of the entity identifier specified in the value field
valueValue to filter by

操作员

relatedTo` 操作符将返回与指定实体有关系的所有实体:

{
"operator": "relatedTo",
"blueprint": "myBlueprint",
"value": "myEntity"
}

动态属性

使用 Port 的用户界面时,可以通过以下函数在编写规则时使用已登录用户的属性:

  • getUserTeams - 用户所属团队的列表。
  • getUserEmail - 用户的电子邮件。
  • getUserFullName - 用户的全名。
  • blueprint - 当前页面的蓝图标识符。
仅限用户界面 由于使用 API 时我们没有登录用户的上下文,因此这些函数仅在使用用户界面时可用。这在创建chart/table widgetscatalog pages 时非常有用。

Usage 示例

[
{
"property": "$team",
"operator": "containsAny",
"value": ["{{getUserTeams()}}"]
}
]
[
{
"property": "emails",
"operator": "contains",
"value": "{{getUserEmail()}}"
}
]
[
{
"property": "name",
"operator": "=",
"value": "{{getUserFullName()}}"
}
]
[
{
"property": "$blueprint",
"operator": "=",
"value": "{{blueprint}}"
}
]

示例

有关搜索的实用代码片段,请参阅examples 页面。

高级

有关高级搜索用例和 Output,请参阅advanced 页面。