Blob-indextags gebruiken om gegevens te beheren en te zoeken met JavaScript
In dit artikel wordt beschreven hoe u blobindextags gebruikt om gegevens te beheren en te vinden met behulp van de Azure Storage-clientbibliotheek voor JavaScript.
Vereisten
- In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en JavaScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject voor gebruik met gegevensbronnen.
- Het autorisatiemechanisme moet machtigingen hebben om te kunnen werken met blobindextags. Zie de autorisatierichtlijnen voor de volgende REST API-bewerkingen voor meer informatie:
Over blob-indextags
Blob-indextags categoriseren gegevens in uw opslagaccount met behulp van tagkenmerken met sleutelwaarde. Deze tags worden automatisch geïndexeerd en weergegeven als doorzoekbare multidimensionale index om eenvoudig gegevens te vinden. In dit artikel leest u hoe u gegevens kunt instellen, ophalen en zoeken met behulp van blob-indextags.
Blob-indextags worden niet ondersteund voor opslagaccounts waarvoor hiërarchische naamruimte is ingeschakeld. Zie Azure Blob-gegevens beheren en vinden met blob-indextagtags voor meer informatie over de functie voor de blob-index, samen met bekende problemen en beperkingen.
Tags instellen
U kunt indextags instellen als uw code geautoriseerde toegang heeft tot blobgegevens via een van de volgende mechanismen:
- Beveiligingsprincipaal waaraan een Azure RBAC-rol is toegewezen met de actie Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write . De eigenaar van de opslagblobgegevens is een ingebouwde rol die deze actie omvat.
- Shared Access Signature (SAS) met machtiging voor toegang tot de tags van de blob (
t
machtiging) - Accountsleutel
Zie Blobindextags instellen voor meer informatie.
Als u tags wilt instellen op de uploadtijd van de blob, maakt u een BlobClient en gebruikt u vervolgens de volgende methode:
In het volgende voorbeeld wordt deze taak uitgevoerd.
// 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}`);
}
U kunt alle tags verwijderen door een leeg JSON-object door te geven aan de methode setTags.
Verwante artikelen: |
---|
Azure Blob-gegevens beheren en zoeken met blobindextags |
Blobtags instellen (REST API) |
Tags ophalen
U kunt indextags ophalen als uw code geautoriseerde toegang heeft tot blobgegevens via een van de volgende mechanismen:
- Beveiligingsprincipaal waaraan een Azure RBAC-rol is toegewezen met de actie Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read . De eigenaar van de opslagblobgegevens is een ingebouwde rol die deze actie omvat.
- Shared Access Signature (SAS) met machtiging voor toegang tot de tags van de blob (
t
machtiging) - Accountsleutel
Zie Blob-indextags ophalen en vermelden voor meer informatie.
Als u tags wilt ophalen, maakt u een BlobClient en gebruikt u vervolgens de volgende methode:
In het volgende voorbeeld ziet u hoe u de tags van de blob kunt ophalen en herhalen.
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]}`);
}
}
Gegevens filteren en zoeken met blobindextags
U kunt indextags gebruiken om gegevens te zoeken en te filteren als uw code geautoriseerde toegang heeft tot blobgegevens via een van de volgende mechanismen:
- Beveiligingsprincipaal waaraan een Azure RBAC-rol is toegewezen met de actie Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action . De eigenaar van de opslagblobgegevens is een ingebouwde rol die deze actie omvat.
- Shared Access Signature (SAS) met machtiging voor het filteren van blobs op tags (
f
machtiging) - Accountsleutel
Zie Gegevens zoeken met behulp van blobindextags voor meer informatie.
Notitie
U kunt geen indextags gebruiken om eerdere versies op te halen. Tags voor eerdere versies worden niet doorgegeven aan de blob-indexengine. Zie Voorwaarden en bekende problemen voor meer informatie.
Gegevens worden opgevraagd met een JSON-object dat als een tekenreeks wordt verzonden. De eigenschappen hoeven geen extra aanhalingstekens voor tekenreeksen te hebben, maar de waarden hebben wel extra aanhalingstekens nodig.
In de volgende tabel ziet u een aantal queryreeksen:
Querytekenreeks voor tags (tagOdataQuery) | Beschrijving |
---|---|
id='1' AND project='billing' |
Blobs filteren op alle containers op basis van deze twee eigenschappen |
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' |
Filter blobs in alle containers op basis van strikte eigenschapswaarde voor owner en bereik van datums voor createdOn eigenschap. |
@container = 'my-container' AND createdBy = 'Jill' |
Filteren op container en specifieke eigenschap. In deze query createdBy is een tekstovereenkomst en wordt geen autorisatieovereenkomst via Active Directory aangegeven. |
Als u blobs wilt zoeken, maakt u een BlobClient en gebruikt u vervolgens de volgende methode:
In het volgende voorbeeld worden alle blobs gevonden die overeenkomen met de parameter 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)}`);
}
}
}
En voorbeelduitvoer voor deze functie toont de overeenkomende blobs en de bijbehorende tags, op basis van de console.log code in de voorgaande functie:
Respons |
---|
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"set-tags-1650565920363"} |
Resources
Zie de volgende resources voor meer informatie over het gebruik van indextags voor het beheren en vinden van gegevens met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript.
REST API-bewerkingen
De Azure SDK voor JavaScript bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende JavaScript-paradigma's. De clientbibliotheekmethoden voor het beheren en gebruiken van blobindextags gebruiken de volgende REST API-bewerkingen:
- Blobtags ophalen (REST API)
- Blobtags instellen (REST API)
- Blobs zoeken op tags (REST API)