SEARCH_INDEXES 视图
INFORMATION_SCHEMA.SEARCH_INDEXES 视图中的每一行对应数据集中的每个搜索索引。
所需权限
如需查看搜索索引元数据,您需要对具有相应索引的表拥有 bigquery.tables.get 或 bigquery.tables.list Identity and Access Management (IAM) 权限。以下每个预定义的 IAM 角色都至少包含以下权限之一:
- roles/bigquery.admin
- roles/bigquery.dataEditor
- roles/bigquery.dataOwner
- roles/bigquery.dataViewer
- roles/bigquery.metadataViewer
- roles/bigquery.user
如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制。
架构
当您查询INFORMATION_SCHEMA.SEARCH_INDEXES 视图时,数据集中的每个搜索索引都会有一行对应的查询结果。
INFORMATION_SCHEMA.SEARCH_INDEXES 视图具有如下架构:
| 列名 | 数据类型 | 值 | 
|---|---|---|
| index_catalog | STRING | 包含数据集的项目的名称。 | 
| index_schema | STRING | 包含索引的数据集的名称。 | 
| table_name | STRING | 在其中创建索引的基表的名称。 | 
| index_name | STRING | 索引的名称。 | 
| index_status | STRING | 索引的状态: ACTIVE、PENDING
          DISABLEMENT、TEMPORARILY DISABLED或PERMANENTLY DISABLED。
 | 
| creation_time | TIMESTAMP | 索引的创建时间。 | 
| last_modification_time | TIMESTAMP | 上次修改索引配置的时间。例如,删除编入索引的列。 | 
| last_refresh_time | TIMESTAMP | 上次将表数据编入索引的时间。 NULL值表示索引尚不可用。 | 
| disable_time | TIMESTAMP | 索引状态设置为 DISABLED的时间。如果索引状态不是DISABLED,则值为NULL。 | 
| disable_reason | STRING | 索引停用的原因。如果索引状态不是 DISABLED,则为NULL。 | 
| DDL | STRING | 用于创建索引的 DDL 语句。 | 
| coverage_percentage | INTEGER | 已编入索引的表数据的近似百分比。0% 表示索引在 SEARCH查询中不可用,即使部分数据已编入索引也是如此。 | 
| unindexed_row_count | INTEGER | 基表中尚未编入索引的行数。 | 
| total_logical_bytes | INTEGER | 索引的可计费逻辑字节数。 | 
| total_storage_bytes | INTEGER | 索引的可计费存储字节数。 | 
| analyzer | STRING | 用于为搜索索引生成词元的文本分析器。 | 
范围和语法
针对此视图的查询必须具有数据集限定符。下表说明了此视图的区域范围:
| 视图名称 | 资源范围 | 区域范围 | 
|---|---|---|
| [PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEXES | 数据集级 | 数据集位置 | 
- 
  可选:PROJECT_ID:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
- 
  DATASET_ID:您的数据集的 ID。如需了解详情,请参阅数据集限定符。
示例
-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEXES;
示例
以下示例展示了项目 my_project 的数据集 my_dataset 中表的所有活跃搜索索引。该示例包括索引名称、用于创建索引的 DDL 语句、索引覆盖率及其文本分析器。如果编入索引的基表小于 10GB,则系统不会填充其索引,在这种情况下,coverage_percentage 为 0。
SELECT table_name, index_name, ddl, coverage_percentage, analyzer
FROM my_project.my_dataset.INFORMATION_SCHEMA.SEARCH_INDEXES
WHERE index_status = 'ACTIVE';
结果应如下所示:
+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+ | table_name | index_name | ddl | coverage_percentage | analyzer | +-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+ | small_table | names_index | CREATE SEARCH INDEX `names_index` ON `my_project.my_dataset.small_table`(names) | 0 | NO_OP_ANALYZER | | large_table | logs_index | CREATE SEARCH INDEX `logs_index` ON `my_project.my_dataset.large_table`(ALL COLUMNS) | 100 | LOG_ANALYZER | +-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+