You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过服务主体获取Azure Cognitive Search配额与使用量并导出至CSV

解决Azure Cognitive Search使用量与配额数据导出问题

1. 配置服务主体权限

给你的服务主体分配搜索服务参与者或监控读取者角色(在Azure门户的搜索服务IAM页面操作),确保它有权限调用Get Service Statistics API。

2. 获取Azure AD认证令牌

用服务主体的客户端ID、客户端密钥、租户ID获取访问令牌,目标资源为https://search.azure.com:

  • 用Azure CLI执行:
    az account get-access-token --resource https://search.azure.com --query accessToken -o tsv
    
  • 用代码(如Python MSAL)则通过客户端凭证流获取令牌。

3. 调用Get Service Statistics API

发送GET请求到指定端点:

GET https://{your-search-service-name}.search.windows.net/service/stats?api-version=2023-11-01

请求头需包含:

  • Authorization: Bearer {your-access-token}
  • Content-Type: application/json

4. 解析API返回数据

API返回的JSON结构中:

  • counters字段对应当前使用量,涵盖documentCount(总文档数)、indexCount(索引数)、storageSize(已用存储)等指标;
  • limits字段对应配额上限,涵盖maxDocumentCount、maxIndexCount、maxStorageSize等指标。
    这两个字段完全匹配你截图中的使用量与配额信息。

5. 导出为CSV文件

Python示例

import csv
import requests

# 替换为你的服务信息
search_service_name = "your-search-service"
access_token = "your-access-token"
api_version = "2023-11-01"

# 调用API
url = f"https://{search_service_name}.search.windows.net/service/stats?api-version={api_version}"
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}
response = requests.get(url)
data = response.json()

# 整理统计数据
stats_data = []
# 追加使用量数据
for key, value in data["counters"].items():
    stats_data.append({"指标": key, "类型": "当前使用量", "值": value["value"]})
# 追加配额数据
for key, value in data["limits"].items():
    stats_data.append({"指标": key, "类型": "配额上限", "值": value})

# 写入CSV文件
with open("search_service_stats.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["指标", "类型", "值"])
    writer.writeheader()
    writer.writerows(stats_data)

PowerShell示例

# 替换为你的服务信息
$searchServiceName = "your-search-service"
$accessToken = "your-access-token"
$apiVersion = "2023-11-01"

# 调用API
$url = "https://$searchServiceName.search.windows.net/service/stats?api-version=$apiVersion"
$headers = @{
    "Authorization" = "Bearer $accessToken"
    "Content-Type" = "application/json"
}
$response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get

# 整理统计数据
$stats = @()
# 追加使用量数据
foreach ($key in $response.counters.PSObject.Properties.Name) {
    $stats += [PSCustomObject]@{
        指标 = $key
        类型 = "当前使用量"
        值 = $response.counters.$key.value
    }
}
# 追加配额数据
foreach ($key in $response.limits.PSObject.Properties.Name) {
    $stats += [PSCustomObject]@{
        指标 = $key
        类型 = "配额上限"
        值 = $response.limits.$key
    }
}

# 导出CSV文件
$stats | Export-Csv -Path "search_service_stats.csv" -NoTypeInformation -Encoding UTF8

内容的提问来源于stack exchange,提问作者learningtocode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 12:10:30