共用方式為


透過 TypeScript 使用 Blob 索引標籤來管理和尋找資料

本文說明如何利用適用於 JavaScript 的 Azure 儲存體用戶端程式庫,來使用 Blob 索引標籤以管理和尋找資料。

必要條件

關於 Blob 索引標籤

Blob 索引標記會使用索引鍵/值標記屬性,將儲存體帳戶中的資料分類。 這些標記會自動編製索引,並公開為可搜尋的多維度索引,以便輕鬆地尋找資料。 本文說明如何使用 Blob 索引標記來設定、取得及尋找資料。

已啟用階層命名空間的儲存體帳戶不支援 Blob 索引標籤。 若要深入了解 Blob 索引標籤功能以及已知問題和限制,請參閱使用 Blob 索引標籤來管理及尋找 Azure Blob 資料

設定標記

如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以設定索引標籤:

如需詳細資訊,請參閱設定 Blob 索引標籤

若要於 Blob 上傳時間設定標籤,請建立 BlobClient 然後使用下列方法:

以下範例會執行此工作。

export async function setBlobTags(
  blockBlobClient: BlockBlobClient,
  tags: Tags
): Promise<void> {
  // Set tags
  const result = await blockBlobClient.setTags(tags);
  if (result.errorCode) throw Error(result.errorCode);

  console.log(`tags set for ${blockBlobClient.name}`);
}

您可以將空的 JSON 物件傳遞至 setTags 方法,以刪除所有標籤。

相關文章
使用 Blob 索引標籤來管理及尋找 Azure Blob 資料
設定 Blob 標籤 (REST API)

取得標籤

如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以取得索引標籤:

如需詳細資訊,請參閱擷取和列出 Blob 索引標籤

若要取得標籤,請建立 BlobClient 然後使用下列方法:

下列範例示範如何取得及逐一查看 Blob 的標籤。

export async function getBlobTags(
  blockBlobClient: BlockBlobClient
): Promise<Tags> {
  const getTagsResponse: BlobGetTagsResponse = await blockBlobClient.getTags();

  if (getTagsResponse.errorCode) throw Error(getTagsResponse.errorCode);

  // Tags: Record<string, string>
  const tags: Tags = getTagsResponse.tags;

  console.log(`tags for ${blockBlobClient.name}`);

  // Print out name/value pairs
  Object.keys(tags).map((tag) => console.log(`${[tag]}: ${tags[tag]}`));

  return tags;
}

使用 Blob 索引標記篩選和尋找資料

如果您的程式碼透過以下其中一種機制獲得授權可以存取 Blob 資料,則您可以使用索引標籤來尋找和篩選資料:

如需詳細資訊,請參閱使用 Blob 索引標籤來尋找資料

注意

您無法使用索引標籤來擷取先前的版本。 先前版本的標記不會傳遞至 Blob 索引引擎。 如需詳細資訊,請參閱條件和已知問題

在查詢資料時,會使用以字串形式傳送的 JSON 物件。 這些屬性不需要有額外的字串引號,但值就需要額外的字串引號。

下表顯示一些查詢字串:

標籤的查詢字串 (tagOdataQuery) 描述
id='1' AND project='billing' 根據這兩個屬性來篩選所有容器的 Blob
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' 根據 owner 的嚴格屬性值和 createdOn 屬性的日期範圍,來篩選所有容器的 Blob。
@container = 'my-container' AND createdBy = 'Jill' 依容器和特定屬性進行篩選。 在此查詢中,createdBy 是文字相符項目,不代表透過 Active Directory 的授權相符項目。

若要尋找 BlOb標籤,請建立 BlobClient 然後使用下列方法:

下列範例會尋找符合 tagOdataQuery 參數的所有 Blob。

async function findBlobsByQuery(
  blobServiceClient: BlobServiceClient,
  tagOdataQuery: string
): Promise<void> {
  // page size
  const maxPageSize = 10;

  let i = 1;

  const listOptions: ServiceFindBlobByTagsOptions = {};

  let iterator = blobServiceClient
    .findBlobsByTags(tagOdataQuery, listOptions)
    .byPage({ maxPageSize });
  let response = (await iterator.next()).value;

  // Prints blob names
  if (response.blobs) {
    for (const blob of response.blobs) {
      console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
    }
  }

  // Gets next marker
  const marker = response.continuationToken;

  // no more blobs
  if (!marker) return;

  // Passing next marker as continuationToken
  iterator = blobServiceClient
    .findBlobsByTags(tagOdataQuery, listOptions)
    .byPage({ continuationToken: marker, maxPageSize });
  response = (await iterator.next()).value;

  // Prints blob names
  if (response.blobs) {
    for (const blob of response.blobs) {
      console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
    }
  }
}

此函式的範例輸出會根據上述函式中的 console.log 程式碼,顯示相符的 Blob 及其標籤:

回應
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"set-tags-1650565920363"}

資源

若要深入了解如何利用適用於 JavaScript 的 Azure Blob 儲存體用戶端程式庫來使用索引標籤管理及尋找資料,請參閱下列資源。

REST API 操作

適用於 JavaScript 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 JavaScript 範例與 REST API 作業進行互動。 用來管理和使用 Blob 索引標籤的用戶端程式庫方法會使用下列 REST API 作業:

程式碼範例

用戶端程式庫資源

另請參閱