Delen via


Gegevens indexeren uit Azure Table Storage

In dit artikel leert u hoe u een indexeerfunctie configureert waarmee inhoud uit Azure Table Storage wordt geïmporteerd en hoe u deze doorzoekbaar maakt in Azure AI Search. Invoer in de indexeerfunctie zijn uw entiteiten in één tabel. Uitvoer is een zoekindex met doorzoekbare inhoud en metagegevens die zijn opgeslagen in afzonderlijke velden.

Dit artikel is een aanvulling op Een indexeerfunctie maken met informatie die specifiek is voor indexering vanuit Azure Table Storage. Azure Portal en REST API's worden gebruikt om een driedelige werkstroom te demonstreren die gebruikelijk is voor alle indexeerfuncties: een gegevensbron maken, een index maken, een indexeerfunctie maken. Gegevensextractie vindt plaats wanneer u de aanvraag Indexeerfunctie maken verzendt.

Vereisten

  • Azure-tabelopslag

  • Tabellen met tekst. Als u binaire gegevens hebt, kunt u AI-verrijking overwegen voor afbeeldingsanalyse.

  • Leesmachtigingen voor Azure Storage. Een 'volledige toegang' verbindingsreeks bevat een sleutel die toegang geeft tot de inhoud, maar als u Azure-rollen gebruikt, moet u ervoor zorgen dat de beheerde identiteit van de zoekservice lezer- en gegevenstoegangsmachtigingen heeft.

Als u de voorbeelden in dit artikel wilt doorlopen, hebt u Azure Portal of een REST-client nodig. Als u Azure Portal gebruikt, moet u ervoor zorgen dat toegang tot alle openbare netwerken is ingeschakeld. Andere methoden voor het maken van een Azure Table-indexeerfunctie zijn Azure SDK's.

Proberen met voorbeeldgegevens

Gebruik deze instructies om een tabel in Azure Storage te maken voor testdoeleinden.

  1. Meld u aan bij Azure Portal, navigeer naar uw opslagaccount en maak een tabel met de naam hotels.

  2. Installeer Azure Storage Explorer.

  3. Download HotelsData_toAzureSearch.csv van GitHub. Dit bestand is een subset van de ingebouwde voorbeeldgegevensset hotels. Het laat de verzameling ruimten, vertaalde beschrijvingen en geografiecoördinaten weg.

  4. Meld u in Azure Storage Explorer aan bij Azure, selecteer uw abonnement en selecteer vervolgens uw opslagaccount.

  5. Open Tabellen en selecteer hotels.

  6. Selecteer Importeren op de opdrachtbalk en selecteer vervolgens het HotelsData_toAzureSearch.csv bestand.

  7. Accepteer de standaardwaarden. Selecteer Importeren om de gegevens te laden.

U moet 50 hotelrecords in de tabel hebben met een automatisch gegenereerde partitionKey, rowKey en tijdstempel. U kunt deze inhoud nu gebruiken voor indexering in Azure Portal, REST-client of een Azure SDK.

Het veld Beschrijving biedt de meest uitgebreide inhoud. U moet dit veld richten op zoekopdrachten in volledige tekst en optionele vectorquery's.

De Azure-portal gebruiken

U kunt de wizard Gegevens importeren of de wizard Gegevens importeren en vectoriseren gebruiken om indexering vanuit een SQL-databasetabel of -weergave te automatiseren. De configuratie van de gegevensbron is vergelijkbaar voor beide wizards.

  1. De wizard starten.

  2. Selecteer of controleer bij Verbinding maken met uw gegevens of controleer of het gegevensbrontype Azure Table Storage is of dat de velden voor gegevensselectie om tabellen vragen.

    De naam van de gegevensbron verwijst naar het verbindingsobject voor de gegevensbron in Azure AI Search. Als u de vectorwizard gebruikt, wordt de naam van uw gegevensbron automatisch gegenereerd met behulp van een aangepast voorvoegsel dat is opgegeven aan het einde van de wizardwerkstroom.

  3. Geef het opslagaccount en de tabelnaam op. De query is optioneel. Het is handig als u specifieke kolommen hebt die u wilt importeren.

  4. Geef een verificatiemethode op, ofwel een beheerde identiteit of ingebouwde API-sleutel. Als u geen beheerde identiteitsverbinding opgeeft, gebruikt Azure Portal de sleutel.

    Als u Azure AI Search configureert voor het gebruik van een beheerde identiteit en u een roltoewijzing maakt in Azure Storage waarmee lezer- en gegevenstoegangsmachtigingen voor de identiteit worden verleend, kan uw indexeerfunctie verbinding maken met tabelopslag met behulp van Microsoft Entra ID en rollen.

  5. Voor de wizard Gegevens importeren en vectoriseren kunt u opties voor verwijderingsdetectie opgeven.

    Verwijderingsdetectie vereist dat u een bestaand veld in de tabel hebt dat kan worden gebruikt als vlag voor voorlopig verwijderen. Het moet een Booleaans veld zijn (u kunt het isDeleted een naam geven). Geef true op als de waarde voor voorlopig verwijderen. Voeg in de zoekindex een bijbehorend zoekveld met de naam IsDeleted toe dat deze kan worden opgehaald en gefilterd.

  6. Ga verder met de resterende stappen om de wizard te voltooien:

De REST API’s gebruiken

In deze sectie ziet u de REST API-aanroepen die een gegevensbron, index en indexeerfunctie maken.

De gegevensbron definiëren

De definitie van de gegevensbron specificeert de brongegevens voor indexering, referenties en beleidsregels voor wijzigingsdetectie. Een gegevensbron is een onafhankelijke resource die kan worden gebruikt door meerdere indexeerfuncties.

  1. Een gegevensbron maken of bijwerken om de definitie ervan in te stellen:

     POST https://[service name].search.windows.net/datasources?api-version=2024-07-01 
     {
         "name": "my-table-storage-ds",
         "description": null,
         "type": "azuretable",
         "subtype": null,
         "credentials": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<account name>"
         },
         "container": {
            "name": "my-table-in-azure-storage",
            "query": ""
         },
         "dataChangeDetectionPolicy": null,
         "dataDeletionDetectionPolicy": null,
         "encryptionKey": null,
         "identity": null
     }
    
  2. Stel 'type' in op "azuretable" (vereist).

  3. Stel referenties in op een Azure Storage-verbindingsreeks. In de volgende sectie worden de ondersteunde indelingen beschreven.

  4. Stel 'container' in op de naam van de tabel.

  5. Stel desgewenst 'query' in op een filter op PartitionKey. Het instellen van deze eigenschap is een best practice die de prestaties verbetert. Als 'query' null is, voert de indexeerfunctie een volledige tabelscan uit, wat kan leiden tot slechte prestaties als de tabellen groot zijn.

Een definitie van een gegevensbron kan ook beleid voor voorlopig verwijderen bevatten, als u wilt dat de indexeerfunctie een zoekdocument verwijdert wanneer het brondocument wordt gemarkeerd voor verwijdering.

Ondersteunde referenties en verbindingsreeks s

Indexeerfuncties kunnen verbinding maken met een tabel met behulp van de volgende verbindingen.

Opslagaccount voor volledige toegang verbindingsreeks
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" }
U kunt de verbindingsreeks ophalen op de pagina Opslagaccount in Azure Portal door toegangssleutels te selecteren in het linkernavigatiedeelvenster. Zorg ervoor dat u een volledige verbindingsreeks en niet alleen een sleutel selecteert.
Beheerde identiteit verbindingsreeks
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;" }
Voor deze verbindingsreeks is geen accountsleutel vereist, maar u moet eerder een zoekservice hebben geconfigureerd om verbinding te maken met een beheerde identiteit.
Shared Access Signature** (SAS) voor opslagaccounts verbindingsreeks
{ "connectionString" : "BlobEndpoint=https://<your account>.blob.core.windows.net/;SharedAccessSignature=?sv=2016-05-31&sig=<the signature>&spr=https&se=<the validity end time>&srt=co&ss=b&sp=rl;" }
De SAS moet de lijst en leesmachtigingen hebben voor tabellen en entiteiten.
Handtekening voor gedeelde toegang voor containers
{ "connectionString" : "ContainerSharedAccessUri=https://<your storage account>.blob.core.windows.net/<container name>?sv=2016-05-31&sr=c&sig=<the signature>&se=<the validity end time>&sp=rl;" }
De SAS moet de lijst en leesmachtigingen voor de container hebben. Zie Shared Access Signatures gebruiken voor meer informatie.

Notitie

Als u SAS-referenties gebruikt, moet u de referenties van de gegevensbron periodiek bijwerken met vernieuwde handtekeningen om te voorkomen dat deze verlopen. Wanneer SAS-referenties verlopen, mislukt de indexeerfunctie met een foutbericht dat lijkt op 'Referenties die zijn opgegeven in de verbindingsreeks ongeldig zijn of zijn verlopen'.

Partitie voor verbeterde prestaties

Azure AI Search maakt standaard gebruik van het volgende interne queryfilter om bij te houden welke bronentiteiten zijn bijgewerkt sinds de laatste uitvoering: Timestamp >= HighWaterMarkValue. Omdat Azure-tabellen geen secundaire index in het Timestamp veld hebben, is voor dit type query een volledige tabelscan vereist en is dit dus traag voor grote tabellen.

Als u een volledige scan wilt voorkomen, kunt u tabelpartities gebruiken om het bereik van elke indexeertaak te beperken.

  • Als uw gegevens op natuurlijke wijze kunnen worden gepartitioneerd in verschillende partitiebereiken, maakt u een gegevensbron en een bijbehorende indexeerfunctie voor elk partitiebereik. Elke indexeerfunctie moet nu alleen een specifiek partitiebereik verwerken, wat resulteert in betere queryprestaties. Als de gegevens die moeten worden geïndexeerd een klein aantal vaste partities hebben, nog beter: elke indexeerfunctie voert alleen een partitiescan uit.

    Als u bijvoorbeeld een gegevensbron wilt maken voor het verwerken van een partitiebereik met sleutels van 000 waaruit 100, gebruikt u een query als volgt: "container" : { "name" : "my-table", "query" : "PartitionKey ge '000' and PartitionKey lt '100' " }

  • Als uw gegevens op tijd worden gepartitioneerd (bijvoorbeeld als u elke dag of week een nieuwe partitie maakt), kunt u de volgende aanpak overwegen:

    • Geef in de definitie van de gegevensbron een query op die vergelijkbaar is met het volgende voorbeeld: (PartitionKey ge <TimeStamp>) and (other filters).

    • Bewaak de voortgang van de indexeerfunctie met behulp van de <TimeStamp> Status-API van Get Indexer en werk de voorwaarde van de query periodiek bij op basis van de meest recente geslaagde waarde voor hoge watermarkeringen.

    • Als u met deze methode een volledige herindex moet activeren, stelt u de gegevensbronquery opnieuw in naast het opnieuw instellen van de indexeerfunctie.

Zoekvelden toevoegen aan een index

Voeg in een zoekindex velden toe om de inhoud en metagegevens van uw tabelentiteiten te accepteren.

  1. Een index maken of bijwerken om zoekvelden te definiëren waarmee inhoud van entiteiten wordt opgeslagen:

    POST https://[service name].search.windows.net/indexes?api-version=2024-07-01 
    {
      "name" : "my-search-index",
      "fields": [
        { "name": "Key", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "SomeColumnInMyTable", "type": "Edm.String", "searchable": true }
      ]
    }
    
  2. Maak een documentsleutelveld ('sleutel': true),maar sta de indexeerfunctie toe dat het automatisch wordt ingevuld. Een tabelindexeerfunctie vult het sleutelveld met samengevoegde partitie- en rijsleutels uit de tabel. Als de PartitionKey van een rij bijvoorbeeld is 1 en RowKey is 1_123, is 11_123de sleutelwaarde . Als de partitiesleutel null is, wordt alleen de rijsleutel gebruikt.

    Als u de wizard Gegevens importeren gebruikt om de index te maken, wordt in Azure Portal een sleutelveld voor de zoekindex afgeleid en wordt een impliciete veldtoewijzing gebruikt om de bron- en doelvelden te verbinden. U hoeft het veld niet zelf toe te voegen en u hoeft geen veldtoewijzing in te stellen.

    Als u de REST API's gebruikt en impliciete veldtoewijzingen wilt, maakt en noemt u het documentsleutelveld Sleutel in de definitie van de zoekindex, zoals wordt weergegeven in de vorige stap ({ "name": "Key", "type": "Edm.String", "key": true, "searchable": false }). De indexeerfunctie vult het sleutelveld automatisch in, zonder dat er veldtoewijzingen vereist zijn.

    Als u geen veld met de naam Sleutel in uw zoekindex wilt, voegt u een expliciete veldtoewijzing toe aan de definitie van de indexeerfunctie met de gewenste veldnaam en stelt u het bronveld in op Sleutel:

     "fieldMappings" : [
       {
         "sourceFieldName" : "Key",
         "targetFieldName" : "MyDocumentKeyFieldName"
       }
    ]
    
  3. Voeg nu eventuele andere entiteitsvelden toe die u in uw index wilt opnemen. Als een entiteit er bijvoorbeeld uitziet zoals in het volgende voorbeeld, moet uw zoekindex velden bevatten voor HotelName, Description en Category om deze waarden te ontvangen.

    Schermopname van tabelinhoud in de Opslagbrowser.

    Als u dezelfde namen en compatibele gegevenstypen gebruikt, hoeft u geen veldtoewijzingen meer te gebruiken. Wanneer namen en typen hetzelfde zijn, kan de indexeerfunctie het gegevenspad automatisch bepalen.

De tabelindexeerfunctie configureren en uitvoeren

Zodra u een index en gegevensbron hebt, kunt u de indexeerfunctie maken. De configuratie van de indexeerfunctie geeft de invoer, parameters en eigenschappen aan die het gedrag van de uitvoeringstijd regelen.

  1. Maak of werk een indexeerfunctie bij door deze een naam te geven en te verwijzen naar de gegevensbron en doelindex:

    POST https://[service name].search.windows.net/indexers?api-version=2024-07-01
    {
        "name" : "my-table-indexer",
        "dataSourceName" : "my-table-storage-ds",
        "targetIndexName" : "my-search-index",
        "disabled": null,
        "schedule": null,
        "parameters" : {
            "batchSize" : null,
            "maxFailedItems" : null,
            "maxFailedItemsPerBatch" : null,
            "configuration" : { }
        },
        "fieldMappings" : [ ],
        "cache": null,
        "encryptionKey": null
    }
    
  2. Geef veldtoewijzingen op als er verschillen zijn in veldnaam of -type, of als u meerdere versies van een bronveld in de zoekindex nodig hebt. Het veld Doel is de naam van het veld in de zoekindex.

     "fieldMappings" : [
       {
         "sourceFieldName" : "Description",
         "targetFieldName" : "HotelDescription"
       }
    ]
    
  3. Zie Een indexeerfunctie maken voor meer informatie over andere eigenschappen.

Een indexeerfunctie wordt automatisch uitgevoerd wanneer deze wordt gemaakt. U kunt dit voorkomen door 'uitgeschakeld' in te stellen op waar. Als u de uitvoering van de indexeerfunctie wilt beheren, voert u een indexeerfunctie op aanvraag uit of plaatst u deze in een schema.

De status van de indexeerfunctie controleren

Als u de status en uitvoeringsgeschiedenis van de indexeerfunctie wilt controleren, controleert u de uitvoeringsgeschiedenis van de indexeerfunctie in Azure Portal of verzendt u een GET Indexer Status REST APIrequest

  1. Open zoekbeheerindexeerfuncties> op de pagina van de zoekservice.

  2. Selecteer een indexeerfunctie voor toegang tot de configuratie- en uitvoeringsgeschiedenis.

  3. Selecteer een specifieke indexeerfunctie om details, waarschuwingen en fouten weer te geven.

De uitvoeringsgeschiedenis bevat maximaal 50 van de laatst voltooide uitvoeringen, die in de omgekeerde chronologische volgorde worden gesorteerd, zodat de laatste uitvoering als eerste wordt uitgevoerd.

Volgende stappen

Meer informatie over het uitvoeren van de indexeerfunctie, het bewaken van de status of het plannen van de uitvoering van de indexeerfunctie. De volgende artikelen zijn van toepassing op indexeerfuncties die inhoud ophalen uit Azure Storage: