Sdílet prostřednictvím


Indexování dat z Azure Table Storage

V tomto článku se dozvíte, jak nakonfigurovat indexer , který importuje obsah ze služby Azure Table Storage a umožňuje ho prohledávat ve službě Azure AI Search. Vstupy indexeru jsou vaše entity v jedné tabulce. Výstup je index vyhledávání s prohledávatelným obsahem a metadaty uloženými v jednotlivých polích.

Tento článek doplňuje vytvoření indexeru informacemi, které jsou specifické pro indexování z Azure Table Storage. Pomocí webu Azure Portal a rozhraní REST API demonstruje třídílný pracovní postup společný pro všechny indexery: vytvoření zdroje dat, vytvoření indexu, vytvoření indexeru. Extrakce dat nastane, když odešlete požadavek Create Indexer.

Požadavky

  • Azure Table Storage

  • Tabulky obsahující text Pokud máte binární data, zvažte rozšíření AI pro analýzu obrázků.

  • Oprávnění ke čtení ve službě Azure Storage Úplný přístup připojovací řetězec obsahuje klíč, který poskytuje přístup k obsahu, ale pokud používáte role Azure, ujistěte se, že spravovaná identita vyhledávací služby má oprávnění Čtenář a Přístup k datům.

Abyste mohli projít příklady v tomto článku, potřebujete Azure Portal nebo klienta REST. Pokud používáte Azure Portal, ujistěte se, že je povolený přístup ke všem veřejným sítím. Další přístupy k vytvoření indexeru tabulek Azure zahrnují sady Azure SDK.

Vyzkoušení s ukázkovými daty

Pomocí těchto pokynů vytvořte tabulku ve službě Azure Storage pro účely testování.

  1. Přihlaste se k webu Azure Portal, přejděte do svého účtu úložiště a vytvořte tabulku s názvem hotely.

  2. Nainstalujte Průzkumník služby Azure Storage.

  3. Stáhněte si HotelsData_toAzureSearch.csv z GitHubu. Tento soubor je podmnožinou předdefinované ukázkové datové sady hotelů. Vynechá kolekci místností, přeložené popisy a zeměpisné souřadnice.

  4. V Průzkumník služby Azure Storage se přihlaste k Azure, vyberte své předplatné a pak vyberte svůj účet úložiště.

  5. Otevřete Tabulky a vyberte hotely.

  6. Na panelu příkazů vyberte Importovat a pak vyberte HotelsData_toAzureSearch.csv soubor.

  7. Přijměte výchozí hodnoty. Výběrem možnosti Importovat načtěte data.

V tabulce byste měli mít 50 záznamů hotelů s automaticky vygenerovaným klíčem oddílu, řádkovým klíčem a časovým razítkem. Tento obsah teď můžete použít k indexování na webu Azure Portal, klientovi REST nebo sadě Azure SDK.

Pole Popis poskytuje nejrozsáhodnější obsah. Toto pole byste měli cílit na fulltextové vyhledávání a volitelné vektorové dotazy.

Použití portálu Azure Portal

K automatizaci indexování z tabulky nebo zobrazení databáze SQL můžete použít průvodce importem dat nebo průvodce importem a vektorizací dat . Konfigurace zdroje dat je pro oba průvodce podobná.

  1. Spusťte průvodce.

  2. V části Připojit k datům vyberte nebo ověřte, že typ zdroje dat je Azure Table Storage nebo že pole výběru dat zobrazí výzvu k zadání tabulek.

    Název zdroje dat odkazuje na objekt připojení zdroje dat ve službě Azure AI Search. Pokud použijete průvodce vektorem, název zdroje dat se automaticky vygeneruje pomocí vlastní předpony zadané na konci pracovního postupu průvodce.

  3. Zadejte název účtu úložiště a tabulky. Dotaz je nepovinný. Je užitečné, pokud máte konkrétní sloupce, které chcete importovat.

  4. Zadejte metodu ověřování, a to buď spravovanou identitu, nebo integrovaný klíč rozhraní API. Pokud nezadáte připojení spravované identity, azure Portal tento klíč použije.

    Pokud službu Azure AI Search nakonfigurujete tak, aby používala spravovanou identitu, a vytvoříte přiřazení role ve službě Azure Storage, která udělí identitě oprávnění čtenáře a přístupu k datům, může se váš indexer připojit k úložišti tabulek pomocí ID a rolí Microsoft Entra.

  5. V průvodci importem a vektorizací dat můžete určit možnosti detekce odstranění.

    Detekce odstranění vyžaduje, abyste v tabulce měli předem existující pole, které se dá použít jako příznak obnovitelného odstranění. Mělo by to být logické pole (můžete ho pojmenovat IsDeleted). Zadejte true hodnotu obnovitelného odstranění. Do indexu vyhledávání přidejte odpovídající vyhledávací pole s názvem IsDeleted nastaveno na načtení a filtrování.

  6. Pokračujte zbývajícími kroky a dokončete průvodce:

Použití rozhraní REST API

Tato část ukazuje volání rozhraní REST API, která vytvářejí zdroj dat, index a indexer.

Definování zdroje dat

Definice zdroje dat určuje zdrojová data pro indexování, přihlašovací údaje a zásady pro detekci změn. Zdroj dat je nezávislý prostředek, který může používat více indexerů.

  1. Vytvořte nebo aktualizujte zdroj dat a nastavte jeho definici:

     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. Nastavte "typ" na "azuretable" (povinné).

  3. Nastavte přihlašovací údaje na připojovací řetězec služby Azure Storage. Následující část popisuje podporované formáty.

  4. Nastavte "kontejner" na název tabulky.

  5. Volitelně můžete nastavit dotaz na filtr pro PartitionKey. Nastavení této vlastnosti je osvědčeným postupem, který zlepšuje výkon. Pokud má parametr "query" hodnotu null, spustí indexer úplnou kontrolu tabulky, což může vést k nízkému výkonu, pokud jsou tabulky velké.

Definice zdroje dat může také zahrnovat zásady obnovitelného odstranění, pokud chcete, aby indexer odstranil vyhledávací dokument, když je zdrojový dokument označen příznakem pro odstranění.

Podporované přihlašovací údaje a připojovací řetězec

Indexery se můžou připojit k tabulce pomocí následujících připojení.

Připojovací řetězec účtu úložiště s úplným přístupem
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" }
Připojovací řetězec můžete získat ze stránky účtu úložiště na webu Azure Portal výběrem přístupových klíčů v levém navigačním podokně. Nezapomeňte vybrat úplný připojovací řetězec a ne jenom klíč.
Připojovací řetězec spravované identity
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;" }
Tato připojovací řetězec nevyžaduje klíč účtu, ale dříve jste nakonfigurovali vyhledávací službu pro připojení pomocí spravované identity.
Sdílený přístupový podpis účtu úložiště** (SAS) připojovací řetězec
{ "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;" }
Sdílený přístupový podpis by měl mít u tabulek a entit oprávnění ke čtení.
Sdílený přístupový podpis kontejneru
{ "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;" }
Sdílený přístupový podpis by měl mít v kontejneru oprávnění ke čtení a seznam. Další informace naleznete v tématu Použití sdílených přístupových podpisů.

Poznámka:

Pokud používáte přihlašovací údaje SAS, budete muset přihlašovací údaje ke zdroji dat pravidelně aktualizovat obnovenými podpisy, aby se zabránilo jejich vypršení platnosti. Když vyprší platnost přihlašovacích údajů SAS, indexer selže s chybovou zprávou typu "Přihlašovací údaje zadané v připojovací řetězec jsou neplatné nebo vypršela jejich platnost".

Oddíl pro zvýšení výkonu

Azure AI Search ve výchozím nastavení používá následující interní filtr dotazů ke sledování toho, které zdrojové entity byly od posledního spuštění aktualizovány: Timestamp >= HighWaterMarkValue Vzhledem k tomu, že tabulky Azure nemají v poli sekundární index Timestamp , tento typ dotazu vyžaduje úplnou kontrolu tabulky, a proto je pomalý pro velké tabulky.

Abyste se vyhnuli úplnému prohledávání, můžete pomocí oddílů tabulky zúžit rozsah jednotlivých úloh indexeru.

  • Pokud je možné data přirozeně rozdělit do několika oblastí oddílů, vytvořte zdroj dat a odpovídající indexer pro každou oblast oddílů. Každý indexer teď musí zpracovat jenom konkrétní rozsah oddílů, což vede k lepšímu výkonu dotazů. Pokud data, která je potřeba indexovat, mají malý počet pevných oddílů, ještě lépe: každý indexer prohledá pouze oddíly.

    Pokud například chcete vytvořit zdroj dat pro zpracování rozsahu oddílů s klíči od 000 do 100, použijte dotaz podobný tomuto: "container" : { "name" : "my-table", "query" : "PartitionKey ge '000' and PartitionKey lt '100' " }

  • Pokud jsou data rozdělená podle času (například pokud vytváříte nový oddíl každý den nebo týden), zvažte následující přístup:

    • V definici zdroje dat zadejte dotaz podobný následujícímu příkladu: (PartitionKey ge <TimeStamp>) and (other filters).

    • Sledujte průběh indexeru pomocí rozhraní API pro získání stavu indexeru a pravidelně aktualizujte <TimeStamp> podmínku dotazu na základě nejnovější úspěšné hodnoty horní meze.

    • Pokud při tomto přístupu potřebujete aktivovat úplné přeindexování, resetujte kromě indexeru také dotaz zdroje dat.

Přidání vyhledávacích polí do indexu

Do indexu vyhledávání přidejte pole pro příjem obsahu a metadat entit tabulky.

  1. Vytvořte nebo aktualizujte index a definujte vyhledávací pole, která budou ukládat obsah z entit:

    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. Vytvořte pole klíče dokumentu ("key": true), ale indexer ho automaticky naplní. Indexer tabulky naplní pole klíče zřetězenými klíči oddílu a klíčů řádků z tabulky. Pokud je například PartitionKey 1 řádku a RowKey je 1_123, pak hodnota klíče je 11_123. Pokud má klíč oddílu hodnotu null, použije se pouze klíč řádku.

    Pokud k vytvoření indexu používáte Průvodce importem dat, Azure Portal odvodí pole Klíč pro index vyhledávání a použije implicitní mapování polí pro připojení zdrojových a cílových polí. Pole nemusíte přidávat sami a nemusíte nastavovat mapování polí.

    Pokud používáte rozhraní REST API a chcete implicitní mapování polí, vytvořte a pojmenujte pole klíče dokumentu "Klíč" v definici indexu vyhledávání, jak je znázorněno v předchozím kroku ({ "name": "Key", "type": "Edm.String", "key": true, "searchable": false }). Indexer vyplní pole Klíč automaticky bez nutnosti mapování polí.

    Pokud nechcete ve vyhledávacím indexu pole s názvem Klíč, přidejte do definice indexeru explicitní mapování polí s požadovaným názvem pole a nastavte zdrojové pole na Klíč:

     "fieldMappings" : [
       {
         "sourceFieldName" : "Key",
         "targetFieldName" : "MyDocumentKeyFieldName"
       }
    ]
    
  3. Teď přidejte do indexu všechna další pole entity, která chcete použít. Pokud například entita vypadá jako v následujícím příkladu, měl by mít index vyhledávání pole pro HotelName, Description a Category, aby tyto hodnoty získal.

    Snímek obrazovky s obsahem tabulky v prohlížeči Storage

    Použití stejných názvů a kompatibilních datových typů minimalizuje potřebu mapování polí. Pokud jsou názvy a typy stejné, indexer může automaticky určit cestu k datům.

Konfigurace a spuštění indexeru tabulky

Jakmile budete mít index a zdroj dat, budete připraveni vytvořit indexer. Konfigurace indexeru určuje vstupy, parametry a vlastnosti, které řídí chování doby běhu.

  1. Vytvořte nebo aktualizujte indexer tak, že ho pojmenujte a odkazujete na zdroj dat a cílový index:

    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. Určete mapování polí, pokud existují rozdíly v názvu nebo typu pole nebo pokud potřebujete v indexu vyhledávání více verzí zdrojového pole. Cílové pole je název pole v indexu vyhledávání.

     "fieldMappings" : [
       {
         "sourceFieldName" : "Description",
         "targetFieldName" : "HotelDescription"
       }
    ]
    
  3. Další informace o dalších vlastnostech najdete v tématu Vytvoření indexeru .

Indexer se spustí automaticky při jeho vytvoření. Můžete tomu zabránit nastavením "zakázáno" na hodnotu true. Pokud chcete řídit provádění indexeru, spusťte indexer na vyžádání nebo ho umístěte do plánu.

Kontrola stavu indexeru

Pokud chcete monitorovat stav indexeru a historii spuštění, zkontrolujte historii spuštění indexeru na webu Azure Portal nebo odešlete rozhraní REST API pro získání stavu indexeru.

  1. Na stránce vyhledávací služby otevřete indexery správy>vyhledávání.

  2. Vyberte indexer pro přístup ke konfiguraci a historii spuštění.

  3. Výběrem konkrétní úlohy indexeru zobrazíte podrobnosti, upozornění a chyby.

Historie provádění obsahuje až 50 naposledy dokončených spuštění, které jsou seřazeny v obráceném chronologickém pořadí tak, aby poslední spuštění bylo první.

Další kroky

Přečtěte si další informace o tom, jak spustit indexer, monitorovat stav nebo naplánovat spuštění indexeru. Následující články platí pro indexery, které načítá obsah ze služby Azure Storage: