你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

在 Azure AI 搜索 中管理索引

注释

Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。

创建索引后,可以使用 Azure 门户访问其统计信息和定义,或者将其从搜索服务中删除。

创建索引后,可以使用 Azure AI 搜索 REST API访问其统计信息和定义,或将其从搜索服务中删除。

创建索引后, 可以将 Azure SDK 用于 .NET、Java、JavaScript 或 Python 访问其统计信息和定义,或者将其从搜索服务中删除。

本文介绍如何在不影响索引内容的情况下管理索引。 有关修改索引定义的指南,请参阅 Update 或重新生成 Azure AI 搜索 中的索引。

局限性

搜索服务的定价层确定索引、字段和文档的最大数量和大小。 有关详细信息,请参阅 Azure AI 搜索 中的 Service 限制。

否则,以下限制适用于索引管理:

  • 无法使索引脱机进行维护。 索引始终可用于搜索操作。

  • 无法在搜索服务内或跨搜索服务直接复制或重复索引。 但是,可以将备份和还原示例用于 .NET 或 Python来实现类似的功能。

查看所有索引

查看所有索引:

  1. 在 Azure 门户中,转到你的搜索服务。

  2. 在左窗格中,选择 “搜索管理>索引”。

    门户中索引页的屏幕截图。

    默认情况下,索引按名称按升序排序。 可以通过选择相应的列标题,按 名称、 文档计数、 矢量索引配额使用情况或 总存储大小 进行排序。

使用 索引 - 列表(REST API) 检索搜索服务上的所有索引。

### List all indexes
GET https://[service name].search.windows.net/indexes?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

使用首选Azure SDK检索搜索服务上的所有索引。

.NET的Azure SDK为此任务提供 GetIndexesAsync。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// List all indexes
await foreach (var index in indexClient.GetIndexesAsync())
{
    Console.WriteLine(index.Name);
}

查看索引的统计信息

在索引页上,门户提供以下统计信息:

  • 索引中的文档数。
  • 索引使用的存储空间。
  • 索引使用的矢量存储空间。
  • 搜索服务上每个索引的最大存储空间,具体取决于 定价层。 此值不表示索引当前可用的总存储。

门户中索引统计信息的屏幕截图。

使用 索引 - 获取统计信息(REST API) 检索索引的文档计数、存储使用情况和矢量存储使用情况。

### Get index statistics
GET https://[service name].search.windows.net/indexes/[index name]/stats?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

使用首选Azure SDK检索索引的文档计数、存储使用情况和矢量存储使用情况。

.NET的Azure SDK为此任务提供 GetIndexStatisticsAsync。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// Get index statistics
var statsResponse = await indexClient.GetIndexStatisticsAsync("[index name]");
var stats = statsResponse.Value;
Console.WriteLine($"Number of documents: {stats.DocumentCount:N0}");
Console.WriteLine($"Storage consumed by index: {stats.StorageSize:N0} bytes");
Console.WriteLine($"Storage consumed by vectors: {stats.VectorIndexSize:N0} bytes");

查看索引的定义

每个索引由增强搜索功能的字段和可选组件定义,例如分析器、规范化器、标记化器和同义词映射。 此定义确定索引在索引编制和查询期间的结构和行为。

在索引页上,选择 “编辑 JSON” 以查看其完整定义。

门户中“编辑 JSON”按钮的屏幕截图。

使用 索引 - 获取(REST API) 检索索引的 JSON 定义。

### Get index definition
GET https://[service name].search.windows.net/indexes/[index name]?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

使用首选Azure SDK检索索引的 JSON 定义。

.NET的Azure SDK为此任务提供 GetIndexAsync。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// Get index definition
var index = await indexClient.GetIndexAsync("[index name]");
string indexJson = JsonSerializer.Serialize(index.Value, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(indexJson);

删除索引

警告

无法撤销已删除的索引。 在继续之前,请确保要从搜索服务中永久删除索引及其文档。

在索引页上,选择 “删除 ”以启动删除过程。

门户中“删除”按钮的屏幕截图。

门户会提示你确认删除。 选择 “删除”后,请检查通知以确认删除成功。

门户中删除确认的屏幕截图。

使用 索引 - 删除(REST API) 永久删除索引。

### Delete an index
DELETE https://[service name].search.windows.net/indexes/[index name]?api-version=[api version]
    Content-Type: application/json
    api-key: [admin key]

如果已成功删除索引,应会收到 HTTP/1.1 204 No Content 响应。

使用首选Azure SDK永久删除索引。

.NET的Azure SDK为此任务提供 DeleteIndexAsync。

// Create a SearchIndexClient
var endpoint = new Uri("[service endpoint]");
var credential = new AzureKeyCredential("[admin key]");
var indexClient = new SearchIndexClient(endpoint, credential);

// Delete the index
await indexClient.DeleteIndexAsync("[index name]");
Console.WriteLine("Index deleted successfully.");