支持的示例查询模板

本文为您介绍高级搜索中系统内置的示例查询模板。

名称

描述

SQL

对阿里云资源计数

返回有权限的资源总数。

-- 使用COUNT()函数返回资源的数量。
-- resources表存储了资源属性的相关信息。
SELECT
 COUNT(*)
FROM
 resources;

对ECS实例资源计数

返回有权限的ECS实例总数。

-- 可以将"resource_type = 'ACS::ECS::Instance'"更改为其他查询条件,表示对特定范围内的资源计数。
-- 在控制台左侧的资源属性列表中单击资源类型或属性时,会自动创建查询条件并填充到查询语句中。
SELECT
 COUNT(*)
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Instance';

列出所有阿里云资源

返回所有有权限的资源,并按照资源类型和资源ID排列。

-- 本例展示了资源的所有核心属性,可以添加或删除属性,您也可以通过设置properties来展示资源扩展属性。
-- 使用“ORDER BY”指定排序规则。可以使用DESC、ASC更改排列顺序。未指定顺序时,默认为升序("ASC")。
-- 使用resource_type、resource_id的排序方式可以加速查询。
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
ORDER BY
 resource_type,
 resource_id
LIMIT
 1000 OFFSET 0;

列出所有ECS实例资源

返回所有有权限的ECS实例资源,并按资源名称升序排列。

-- 可以更改排序依据的属性和排列顺序。未指定顺序时,默认为升序("ASC")。
-- 选择排序依据的属性时,建议避开有空值的属性或进行特殊处理,否则这部分资源无法被正确排序。
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Instance'
ORDER BY
 resource_name
LIMIT
 1000 OFFSET 0;

查询按资源类型和资源ID排序的前20个资源

按照资源类型和资源ID排列,并返回前20个资源的列表。

-- "LIMIT" 用于指定返回结果的最大数量。范围是1~1000。如果未指定,默认返回最多1000条记录。
-- 如果排序列的属性值存在重复,多次执行查询可能会返回不一致的结果,可以添加排序列保证结果的一致性。
SELECT
 resource_id,
 resource_name,
 region_id,
 resource_type,
 account_id
FROM
 resources
ORDER BY
 resource_type,
 resource_id
LIMIT
 20;

查询按资源类型和资源ID排序的第11到第30个资源

按照资源类型和资源ID排列,并返回第11到第30个资源的列表。

-- 使用 "LIMIT" 和"OFFSET"可以限制返回结果的范围。"LIMIT" 用于指定返回结果的最大数量,"OFFSET" 用于指定从哪个位置开始返回结果。
-- 这个机制可以用于分页查询。每次查询时,通过指定 "LIMIT" 限制返回结果的数量,通过增加 "OFFSET" 获取下一页的结果。为了保证在一致的列表中截取连续的数据,应使用 "ORDER BY" 指定排序方式。
-- 如果排序列的属性值存在重复,多次执行查询可能会返回不一致的结果,可以添加排序列保证结果的一致性。
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
ORDER BY
 resource_type, 
 resource_id
LIMIT
 20 OFFSET 10;

列出不同资源类型的资源数量

列出不同资源类型的资源数量,并按照数量降序排列。

-- 使用 "GROUP BY" 可以按照某个属性对资源进行分组归类。
-- 如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
 resource_type,
 COUNT(*) AS cnt
FROM
 resources
GROUP BY
 resource_type
ORDER BY
 cnt DESC;

列出不同地域的资源数量

列出不同地域的资源数量,并按照数量降序排列。

-- 如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
 region_id,
 COUNT(*) AS cnt
FROM
 resources
GROUP BY
 region_id
ORDER BY
 cnt DESC;

列出不同资源组的资源数量

列出不同资源组的资源数量,并按照数量降序排列。

--如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
 CASE
 WHEN resource_group_id IS NULL THEN '未接入资源组'
 ELSE resource_group_id
 END AS resource_group_id,
 COUNT(*) AS cnt
FROM
 resources
GROUP BY
 resource_group_id
ORDER BY
 cnt DESC;

列出指定资源组下的不同资源类型的资源数量

列出指定资源组下的所有资源类型的资源数量,并按照数量降序排列。

-- 如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
 resource_type,
 COUNT(*) AS cnt
FROM
 resources
WHERE
 resource_group_id = 'rg-xxx'
GROUP BY
 resource_type
ORDER BY
 cnt DESC;

列出ECS产品所有类型的资源

列出ECS产品所有类型的资源,并按照资源类型和创建时间排序。

--本例使用 "ACS::ECS::%" 来匹配以 "ACS::ECS::" 开头的资源类型code。查询结果将包括 ECS 产品中所有类型的资源。
--本例首先对资源按照资源类型进行升序排列,然后在每个资源类型内部,再按照创建时间进行升序排列。
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
WHERE
 resource_type LIKE 'ACS::ECS::%'
ORDER BY
 resource_type,
 create_time;

列出包含指定标签的资源

列出包含指定标签键和值的所有资源。

-- 可以将指定的标签键 "KEY" 和标签值 "VALUE" 更改为任何所需的其他标签键和值。
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
WHERE
 tags ->> 'KEY' = 'VALUE';

列出标签键包含“test”的资源

列出标签键包含“test”的所有资源。

--本例使用了一个嵌套查询。内部查询首先执行,并将查询结果作为一个临时表。外部查询在这个临时表中进行查询。
--使用JSONB_OBJECT_KEYS()函数可以将map类型的对象展开,返回键的集合。可以对展开后的集合进行查询。
--本例使用%test%的模式匹配所有包含"test"的标签键,不论其前后有什么其他字符。
SELECT
 *
FROM
 (
 SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id,
 JSONB_OBJECT_KEYS(tags) AS tag_key
 FROM
 resources
 ) AS r
WHERE
 r.tag_key LIKE '%test%'
ORDER BY
 r.resource_type,
 r.resource_id;

列出包括指定IP的资源

列出包括指定IP的所有资源。

-- 使用JSONB_ARRAY_ELEMENTS_TEXT()函数可以将数组展开为text值的集合。可以对展开后的集合进行查询。
SELECT
 *
FROM
 (
 SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id,
 JSONB_ARRAY_ELEMENTS_TEXT(ip_addresses) AS ip
 FROM
 resources
 ) AS r
WHERE
 r.ip = 'xxx.xxx.xxx.xxx'
ORDER BY
 r.resource_type,
 r.resource_id;

列出指定时间后创建的ECS实例

列出指定时间后创建的ECS实例资源。

-- 使用AND连接多个查询条件,将返回同时满足这些查询条件的资源
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Instance'
 AND create_time > '2023-08-07'
ORDER BY
 create_time;

列出30天内创建的资源

列出30天内创建的资源列表,并按照创建时间升序排列。

-- 可以在查询条件中进行计算,以实现精确范围内的查询。
SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
WHERE
 create_time > TO_CHAR(NOW() - interval '30 day', 'YYYY-MM-DD')
ORDER BY
 create_time;

列出指定VPC下挂载的资源

列出指定VPC下挂载的资源列表,并按照资源类型升序排列。

SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id
FROM
 resources
WHERE
 vpc_id = 'vpc-xxx'
ORDER BY
 resource_type,
 resource_id;

列出ECS实例的扩展属性

列出ECS实例的状态、内存、规格、计费方式等扩展属性。

--可以通过对不同类型资源的properties字段进行查询,以获取资源的扩展属性信息。
--在控制台左侧的资源属性列表中点击资源类型或属性时,会自动创建查询条件并填充到查询语句中。
--使用CASE子句,可以对属性的不同取值进行定义,使查询结果更易于理解。
SELECT
 resource_id,
 resource_name,
 properties ->> 'Status' AS "实例状态",
 properties ->> 'InstanceNetworkType' AS "网络类型",
 properties ->> 'Memory' AS "内存",
 properties ->> 'Cpu' AS Cpu,
 properties ->> 'InstanceType' AS "规格",
 CASE
 properties ->> 'InstanceChargeType'
 WHEN 'PrePaid' THEN '包年包月'
 WHEN 'PostPaid' THEN '按量付费'
 ELSE properties ->> 'InstanceChargeType'
 END AS "付费方式",
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 ip_addresses
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Instance'
ORDER BY
 resource_id;

列出按照操作系统属性分类的ECS实例数量

列出按照操作系统属性分类的ECS实例数量。

--如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
 properties ->> 'OSType' AS OSType,
 COUNT(*) AS num
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Instance'
GROUP BY
 properties ->> 'OSType';

列出已停止的ECS实例

列出当前已停止的ECS实例资源。

--使用CASE子句,可以对属性的不同取值进行定义,使查询结果更易于理解。
--使用CONCAT()函数,可以将多个属性字段合并展示在一列中,方便查看。本例使用“/”作为分隔符。
SELECT
 resource_id,
 resource_name,
 CONCAT(region_id, '/', zone_id) AS "地域/可用区",
 CASE
 properties ->> 'Status'
 WHEN 'Pending' THEN '创建中'
 WHEN 'Running' THEN '运行中'
 WHEN 'Starting' THEN '启动中'
 WHEN 'Stopping' THEN '停止中'
 WHEN 'Stopped' THEN '已停止'
 END AS "状态",
 CONCAT(
 properties ->> 'Cpu',
 ' vCPU ',
 (properties -> 'Memory') :: int / 1024,
 ' GiB ',
 properties ->> 'InstanceType'
 ) AS "配置",
 properties ->> 'InstanceChargeType' AS "付费方式",
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 properties
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Instance'
 AND properties ->> 'Status' = 'Stopped'
ORDER BY
 resource_id;

列出ECS实例关联的磁盘

列出ECS实例关联的磁盘资源。

-- 使用JOIN关键字可以对多个表进行联合查询,根据连接条件和筛选条件获取所需的查询结果。
SELECT
 a.resource_type AS resource_type_disk,
 b.resource_type AS resource_type_instance,
 a.resource_id AS disk_id,
 a.region_id AS instance_region_id,
 b.resource_id AS instance_id,
 b.region_id AS disk_region_id
FROM
 resources a
 LEFT JOIN resources b ON a.properties ->> 'InstanceId' = b.resource_id
WHERE
 a.resource_type = 'ACS::ECS::Disk'
 AND b.resource_type = 'ACS::ECS::Instance';

列出待挂载的磁盘

列出待挂载状态下的磁盘资源。

SELECT
 resource_id,
 resource_name,
 properties ->> 'Status' AS "云盘状态",
 CASE
 properties ->> 'Type'
 WHEN 'system' THEN '系统盘'
 WHEN 'data' THEN '数据盘'
 ELSE properties ->> 'Type'
 END AS "云盘类型",
 properties ->> 'DiskChargeType' AS "云盘计费类型",
 CASE
 properties ->> 'Portable'
 WHEN 'true' THEN '支持'
 ELSE '不支持'
 END AS "可卸载",
 CASE
 properties ->> 'DeleteWithInstance'
 WHEN 'true' THEN '云盘随实例释放自动快照不随云盘释放'
 ELSE '云盘不随实例释放自动快照不随云盘释放'
 END AS "释放行为",
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags
FROM
 resources
WHERE
 properties ->> 'Status' = 'Available'
 AND resource_type = 'ACS::ECS::Disk'
ORDER BY
 resource_id;

列出磁盘容量大于40G的ECS磁盘资源

列出磁盘容量大于40G的ECS磁盘资源,并按照磁盘容量排序。

SELECT
 resource_id,
 resource_name,
 region_id,
 zone_id,
 resource_type,
 account_id,
 create_time,
 resource_group_id,
 tags,
 ip_addresses,
 vpc_id,
 v_switch_id,
 (properties ->> 'Size') :: int AS disk_size
FROM
 resources
WHERE
 resource_type = 'ACS::ECS::Disk'
 AND (properties ->> 'Size') :: int > 40
order by
 disk_size;

列出即将到期的预付费RDS实例

列出即将到期的预付费RDS实例资源。

--本例将到期时间小于30天的资源定义为即将到期的资源,可以根据实际需求对此条件进行调整。
--使用TO_TIMESTAMP()函数,可以将表示时间的字符串转换为格式化的时间戳,以便进行相关的运算。
SELECT
 *
FROM
 (
 SELECT
 resource_id,
 resource_name,
 account_id,
 resource_type,
 region_id,
 zone_id,
 create_time,
 to_timestamp(
 (properties ->> 'ExpireTime') :: varchar,
 'YYYY-MM-DD HH24:MI:SS'
 ) AS "过期时间",
 properties ->> 'DBInstanceStatus' AS "实例状态",
 properties ->> 'DBInstanceType' AS "实例类型",
 CONCAT(
 properties ->> 'Engine',
 ' ',
 properties ->> 'EngineVersion'
 ) AS "数据库类型",
 vpc_id,
 tags
 FROM
 resources
 WHERE
 resource_type = 'ACS::RDS::DBInstance'
 and properties ->> 'PayType' = 'Prepaid'
 order by
 create_time
 ) AS t
WHERE
 t."过期时间" < NOW() + interval '30 day'
ORDER BY
 t.resource_id;