Dela via


Använda blobindextaggar för att hantera och hitta data med JavaScript

Den här artikeln visar hur du använder blobindextaggar för att hantera och hitta data med hjälp av Azure Storage-klientbiblioteket för JavaScript.

Förutsättningar

  • Exemplen i den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för JavaScript. Information om hur du konfigurerar projektet, inklusive paketinstallation, import av moduler och att skapa ett auktoriserat klientobjekt för att arbeta med dataresurser, finns i Kom igång med Azure Blob Storage och JavaScript.
  • Auktoriseringsmekanismen måste ha behörighet att arbeta med blobindextaggar. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:

Om blobindextaggar

Blobindextaggar kategoriserar data i ditt lagringskonto med hjälp av taggattribut för nyckelvärde. Dessa taggar indexeras automatiskt och exponeras som ett sökbart flerdimensionellt index för att enkelt hitta data. Den här artikeln visar hur du anger, hämtar och hittar data med hjälp av blobindextaggar.

Blobindextaggar stöds inte för lagringskonton med hierarkiskt namnområde aktiverat. Mer information om funktionen blobindextagg tillsammans med kända problem och begränsningar finns i Hantera och hitta Azure Blob-data med blobindextaggar.

Ange taggar

Du kan ange indextaggar om koden har auktoriserad åtkomst till blobdata via någon av följande mekanismer:

Mer information finns i Ange blobindextaggar.

Om du vill ange taggar vid blobuppladdningen skapar du en BlobClient och använder sedan följande metod:

I följande exempel utförs den här uppgiften.

// A blob can have up to 10 tags. 
//
// const tags = {
//   project: 'End of month billing summary',
//   reportOwner: 'John Doe',
//   reportPresented: 'April 2022'
// }
async function setTags(containerClient, blobName, tags) {

  // Create blob client from container client
  const blockBlobClient = await containerClient.getBlockBlobClient(blobName);

  // Set tags
  await blockBlobClient.setTags(tags);

  console.log(`uploading blob ${blobName}`);
}

Du kan ta bort alla taggar genom att skicka ett tomt JSON-objekt till metoden setTags.

Relaterade artiklar
Hantera och hitta Azure Blob-data med blobindextaggar
Ange blobtaggar (REST API)

Hämta taggar

Du kan hämta indextaggar om koden har auktoriserad åtkomst till blobdata via någon av följande mekanismer:

Mer information finns i Hämta och lista blobindextaggar.

Om du vill hämta taggar skapar du en BlobClient och använder sedan följande metod:

I följande exempel visas hur du hämtar och itererar över blobens taggar.

async function getTags(containerClient, blobName) {

  // Create blob client from container client
  const blockBlobClient = await containerClient.getBlockBlobClient(blobName);

  // Get tags
  const result = await blockBlobClient.getTags();

  for (const tag in result.tags) {

      console.log(`TAG: ${tag}: ${result.tags[tag]}`);
  }
}

Filtrera och hitta data med blobindextaggar

Du kan använda indextaggar för att hitta och filtrera data om koden har auktoriserad åtkomst till blobdata via någon av följande mekanismer:

Mer information finns i Hitta data med hjälp av blobindextaggar.

Kommentar

Du kan inte använda indextaggar för att hämta tidigare versioner. Taggar för tidigare versioner skickas inte till blobindexmotorn. Mer information finns i Villkor och kända problem.

Data efterfrågas med ett JSON-objekt som skickas som en sträng. Egenskaperna behöver inte ha ytterligare strängcitat, men värdena behöver ytterligare strängcitat.

I följande tabell visas några frågesträngar:

Frågesträng för taggar (tagOdataQuery) beskrivning
id='1' AND project='billing' Filtrera blobar över alla containrar baserat på dessa två egenskaper
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' Filtrera blobar över alla containrar baserat på strikt egenskapsvärde för owner och datumintervall för createdOn egenskapen.
@container = 'my-container' AND createdBy = 'Jill' Filtrera efter container och specifik egenskap. I den här frågan createdBy är en textmatchning och anger inte någon auktoriseringsmatchning via Active Directory.

Om du vill hitta blobar skapar du en BlobClient och använder sedan följande metod:

I följande exempel hittas alla blobar som matchar parametern tagOdataQuery.

async function findBlobsByQuery(blobServiceClient, tagOdataQuery) {

  // page size
  const maxPageSize = 10;

  let i = 1;
  let marker;

  const listOptions = {
    includeMetadata: true,
    includeSnapshots: false,
    includeTags: true,
    includeVersions: false
  };

  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
  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)}`);
    }
  }
}

Och exempelutdata för den här funktionen visar de matchade blobarna och deras taggar, baserat på console.log-koden i föregående funktion:

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

Resurser

Mer information om hur du använder indextaggar för att hantera och hitta data med hjälp av Azure Blob Storage-klientbiblioteket för JavaScript finns i följande resurser.

REST API-åtgärder

Azure SDK för JavaScript innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta JavaScript-paradigm. Klientbiblioteksmetoderna för att hantera och använda blobindextaggar använder följande REST API-åtgärder:

Kodexempel

Klientbiblioteksresurser

Se även