SEARCH_INDEXES 视图

INFORMATION_SCHEMA.SEARCH_INDEXES 视图中的每一行对应数据集中的每个搜索索引。

所需权限

如需查看搜索索引元数据,您需要对具有相应索引的表拥有 bigquery.tables.getbigquery.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 索引的状态:ACTIVEPENDING DISABLEMENTTEMPORARILY DISABLEDPERMANENTLY DISABLED
  • ACTIVE 表示索引可用或正在创建。请参阅 coverage_percentage 以查看索引创建进度。
  • PENDING DISABLEMENT 表示已编入索引的基表的总大小超过组织的限制;索引正在排队等待删除。处于该状态时,索引可用于搜索查询,但会向您收取搜索索引存储费用。
  • TEMPORARILY DISABLED 表示已编入索引的基表的总大小超过您组织的限制,或者编入索引的基表小于 10 GB。处于该状态时,不会在搜索查询中使用索引,并且您不需要为搜索索引存储付费。
  • PERMANENTLY DISABLED 表示基表存在不兼容的架构更改,例如将编入索引的列的类型从 STRING 更改为 INT64
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   |
    +-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+