Adatok indexelése az Azure Table Storage-ból
Ebből a cikkből megtudhatja, hogyan konfigurálhat olyan indexelőt, amely tartalmat importál az Azure Table Storage-ból, és hogyan teszi kereshetővé az Azure AI Searchben. Az indexelő bemenetei az ön entitásai, egyetlen táblában. A kimenet egy keresési index, amely az egyes mezőkben tárolt kereshető tartalmakat és metaadatokat tartalmazza.
Ez a cikk kiegészíti az Indexelő létrehozását az Azure Table Storage-ból való indexelésre vonatkozó információkkal. Az Azure Portal és a REST API-k használatával egy háromrészes munkafolyamatot mutat be, amely az összes indexelőre jellemző: adatforrás létrehozása, index létrehozása, indexelő létrehozása. Az adatkinyerés az Indexelő létrehozása kérés elküldésekor történik.
Előfeltételek
Szöveget tartalmazó táblázatok. Ha bináris adatokkal rendelkezik, fontolja meg az AI-bővítést a képelemzéshez.
Olvasási engedélyek az Azure Storage-ban. A "teljes hozzáférés" kapcsolati sztring tartalmaz egy kulcsot, amely hozzáférést biztosít a tartalomhoz, de ha Azure-szerepköröket használ, győződjön meg arról, hogy a keresési szolgáltatás által felügyelt identitás rendelkezik Storage Table Data Reader engedélyekkel.
A cikkben szereplő példák végigdolgozásához az Azure Portalra vagy egy REST-ügyfélre van szükség. Ha az Azure Portalt használja, győződjön meg arról, hogy az összes nyilvános hálózathoz való hozzáférés engedélyezve van. Az Azure Table indexelők létrehozásának egyéb megközelítései közé tartoznak az Azure SDK-k.
Kipróbálás mintaadatokkal
Ezeket az utasításokat követve hozzon létre egy táblát az Azure Storage-ban tesztelési célokra.
Jelentkezzen be az Azure Portalra, keresse meg a tárfiókot, és hozzon létre egy hotel nevű táblát.
Töltse le HotelsData_toAzureSearch.csv a GitHubról. Ez a fájl a beépített szállodák mintaadatkészletének egy részhalmaza. Kihagyja a szobák gyűjteményét, a lefordított leírásokat és a földrajzi koordinátákat.
Az Azure Storage Explorerben jelentkezzen be az Azure-ba, válassza ki az előfizetését, majd válassza ki a tárfiókot.
Nyissa meg a Táblák elemet , és válassza ki a szállodákat.
Válassza az Importálás lehetőséget a parancssávon, majd válassza ki a HotelsData_toAzureSearch.csv fájlt.
Fogadja el az alapértelmezett beállításokat. Az adatok betöltéséhez válassza az Importálás lehetőséget.
A táblázatban 50 szállodarekordnak kell lennie egy automatikusan létrehozott partitionKey, rowKey és időbélyeggel. Ezt a tartalmat mostantól indexelheti az Azure Portalon, a REST-ügyfélen vagy egy Azure SDK-ban.
A Leírás mező a legigértelmesebb tartalmat biztosítja. Ezt a mezőt a teljes szöveges kereséshez és az opcionális vektoros lekérdezésekhez kell megcélznia.
Az Azure Portal használata
Az Adatok importálása varázslóval vagy az Adatok importálása és vektorizálása varázslóval automatizálhatja az indexelést egy SQL-adatbázistáblából vagy nézetből. Az adatforrás konfigurációja mindkét varázsló esetében hasonló.
Az adatokhoz való csatlakozáskor válassza ki vagy ellenőrizze, hogy az adatforrás típusa vagy az Azure Table Storage, vagy hogy az adatkijelölési mezők táblákat kérnek-e.
Az adatforrás neve az Azure AI Search adatforrás-kapcsolati objektumára hivatkozik. Ha a vektorvarázslót használja, az adatforrás neve automatikusan létrejön a varázsló munkafolyamatának végén megadott egyéni előtaggal.
Adja meg a tárfiók és a tábla nevét. A lekérdezés nem kötelező. Ez akkor hasznos, ha adott oszlopokat szeretne importálni.
Adjon meg egy hitelesítési módszert, egy felügyelt identitást vagy egy beépített API-kulcsot. Ha nem ad meg felügyelt identitáskapcsolatot, az Azure Portal a kulcsot használja.
Ha úgy konfigurálja az Azure AI Search szolgáltatást, hogy felügyelt identitást használjon, és létrehoz egy szerepkör-hozzárendelést az Azure Storage-ban, amely olvasói és adathozzáférési engedélyeket biztosít az identitáshoz, az indexelő Microsoft Entra-azonosító és szerepkörök használatával csatlakozhat a táblatárolóhoz.
Az Adatok importálása és vektorizálása varázslóban megadhatja a törlésészlelési lehetőségeket,
A törlésészleléshez rendelkeznie kell egy már meglévő mezővel a táblában, amely helyreállítható törlési jelzőként használható. Logikai mezőnek kell lennie (nevezheti el törölve). Adja meg
true
a helyreállítható törlés értékét. A keresési indexben adjon hozzá egy isDeleted nevű megfelelő keresőmezőt lekérdezhető és szűrhető értékre.Folytassa a varázsló végrehajtásához szükséges további lépésekkel:
A REST API-k használata
Ez a szakasz az adatforrást, indexet és indexelőt létrehozó REST API-hívásokat mutatja be.
Az adatforrás meghatározása
Az adatforrásdefiníció megadja az indexelendő forrásadatokat, a hitelesítő adatokat és a változásészlelési szabályzatokat. Az adatforrás egy független erőforrás, amelyet több indexelő is használhat.
Adatforrás létrehozása vagy frissítése a definíció beállításához:
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 }
Állítsa be a
"azuretable"
"type" (típus) értéket (kötelező).Állítsa be a "hitelesítő adatokat" egy Azure Storage-kapcsolati sztring. A következő szakasz a támogatott formátumokat ismerteti.
Állítsa a "container" értéket a tábla nevére.
Igény szerint állítsa a "lekérdezést" egy szűrőre a PartitionKeyen. A tulajdonság beállítása ajánlott eljárás, amely javítja a teljesítményt. Ha a "lekérdezés" null értékű, az indexelő teljes táblázatvizsgálatot hajt végre, ami gyenge teljesítményt eredményezhet, ha a táblák nagyok.
Az adatforrás-definíciók tartalmazhatnak helyreállítható törlési szabályzatokat is, ha azt szeretné, hogy az indexelő töröljön egy keresési dokumentumot, amikor a forrásdokumentum törlésre van megjelölve.
Támogatott hitelesítő adatok és kapcsolati sztring
Az indexelők az alábbi kapcsolatokkal csatlakozhatnak egy táblához.
Teljes hozzáférésű tárfiók kapcsolati sztring |
---|
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" } |
A kapcsolati sztring az Azure Portal Tárfiók lapjáról a bal oldali navigációs panel Access-kulcsainak kiválasztásával szerezheti be. Ügyeljen arra, hogy a teljes kapcsolati sztring ne csak egy kulcsot válasszon. |
Felügyelt identitás kapcsolati sztring |
---|
{ "connectionString" : "ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Storage/storageAccounts/<your storage account name>/;" } |
Ez a kapcsolati sztring nem igényel fiókkulcsot, de korábban konfigurálnia kell egy keresési szolgáltatást a felügyelt identitással való csatlakozáshoz. |
Tárfiók megosztott hozzáférésű jogosultságkódja** (SAS) kapcsolati sztring |
---|
{ "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;" } |
Az SAS-nek rendelkeznie kell a táblákra és entitásokra vonatkozó listával és olvasási engedélyekkel. |
Tároló közös hozzáférésű jogosultságkódja |
---|
{ "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;" } |
Az SAS-nek rendelkeznie kell a tárolóra vonatkozó listával és olvasási engedélyekkel. További információ: Közös hozzáférésű jogosultságkódok használata. |
Feljegyzés
SAS-hitelesítő adatok használata esetén az adatforrás hitelesítő adatait rendszeresen frissítenie kell megújított aláírásokkal a lejáratuk megakadályozása érdekében. Amikor az SAS-hitelesítő adatok lejárnak, az indexelő a következőhöz hasonló hibaüzenettel fog meghiúsulni: "A kapcsolati sztring megadott hitelesítő adatok érvénytelenek vagy lejártak".
Partíció a jobb teljesítmény érdekében
Az Azure AI Search alapértelmezés szerint a következő belső lekérdezési szűrőt használja annak nyomon követésére, hogy mely forrásentitások frissültek az utolsó futtatás óta: Timestamp >= HighWaterMarkValue
. Mivel az Azure-táblák nem rendelkeznek másodlagos indexel a Timestamp
mezőben, az ilyen típusú lekérdezések teljes táblavizsgálatot igényelnek, ezért nagy táblák esetében lassúak.
A teljes vizsgálat elkerülése érdekében táblapartíciókkal szűkítheti az egyes indexelő feladatok hatókörét.
Ha az adatok természetesen több partíciótartományba is particionálhatók, hozzon létre egy adatforrást és egy megfelelő indexelőt minden partíciótartományhoz. Mostantól minden indexelőnek csak egy adott partíciótartományt kell feldolgoznia, ami jobb lekérdezési teljesítményt eredményez. Ha az indexelni kívánt adatokhoz kevés rögzített partíció tartozik, még jobb: minden indexelő csak partícióvizsgálatot végez.
Ha például létrehoz egy adatforrást egy partíciótartomány kulcsokkal
000
való feldolgozásához100
, használjon egy ilyen lekérdezést:"container" : { "name" : "my-table", "query" : "PartitionKey ge '000' and PartitionKey lt '100' " }
Ha az adatok particionálása idő szerint történik (például ha naponta vagy hetente hoz létre új partíciót), fontolja meg a következő megközelítést:
Az adatforrás definíciójában adjon meg egy, a következő példához hasonló lekérdezést:
(PartitionKey ge <TimeStamp>) and (other filters)
.Monitorozza az indexelő állapotát az Indexelő állapotának lekérése API használatával, és rendszeresen frissítse a
<TimeStamp>
lekérdezés állapotát a legújabb sikeres magas vízjel érték alapján.Ezzel a módszerrel, ha teljes újraindexelést kell aktiválnia, állítsa alaphelyzetbe az adatforrás-lekérdezést az indexelő alaphelyzetbe állítása mellett.
Keresési mezők hozzáadása indexhez
Egy keresési indexben adjon hozzá mezőket a táblaentitások tartalmának és metaadatainak elfogadásához.
Hozzon létre vagy frissítsen egy indexet az entitásokból származó tartalmakat tároló keresési mezők definiálásához:
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 } ] }
Hozzon létre egy dokumentumkulcsmezőt ("kulcs": igaz), de hagyja, hogy az indexelő automatikusan kitöltse. A táblaindexelő kitölti a kulcsmezőt összefűzött partícióval és sorkulcsokkal a táblából. Ha például egy sor PartitionKey
1
értéke és a RowKey értéke1_123
, akkor a kulcs értéke .11_123
Ha a partíciókulcs null értékű, a rendszer csak a sorkulcsot használja.Ha az Adatok importálása varázslóval hozza létre az indexet, az Azure Portal egy "Kulcs" mezőt keres a keresési indexhez, és implicit mezőleképezést használ a forrás- és célmezők összekapcsolásához. Nem kell saját maga hozzáadnia a mezőt, és nem kell mezőleképezést beállítania.
Ha REST API-kat használ, és implicit mezőleképezéseket szeretne, hozza létre és nevezze el a dokumentumkulcs "Kulcs" mezőjét a keresési index definíciójában az előző lépésben (
{ "name": "Key", "type": "Edm.String", "key": true, "searchable": false }
) látható módon. Az indexelő automatikusan kitölti a Kulcs mezőt, és nincs szükség mezőleképezésre.Ha nem szeretne egy "Kulcs" nevű mezőt a keresési indexben, adjon hozzá egy explicit mezőleképezést az indexelő definíciójában a kívánt mezőnévvel, és állítsa a forrásmezőt "Kulcs" értékre:
"fieldMappings" : [ { "sourceFieldName" : "Key", "targetFieldName" : "MyDocumentKeyFieldName" } ]
Most vegye fel az indexbe a kívánt egyéb entitásmezőket. Ha például egy entitás a következő példához hasonlóan néz ki, akkor a keresési indexnek a HotelName, a Leírás és a Kategória mezőivel kell rendelkeznie ezeknek az értékeknek a fogadásához.
Az azonos nevek és a kompatibilis adattípusok használata minimálisra csökkenti a mezőleképezések szükségességét. Ha a nevek és a típusok megegyeznek, az indexelő automatikusan meghatározhatja az adatelérési utat.
A táblaindexelő konfigurálása és futtatása
Miután rendelkezik indexel és adatforrásokkal, készen áll az indexelő létrehozására. Az indexelő konfigurációja meghatározza a futási idő viselkedését vezérlő bemeneteket, paramétereket és tulajdonságokat.
Hozzon létre vagy frissítsen egy indexelőt úgy, hogy megad neki egy nevet, és hivatkozik az adatforrásra és a célindexre:
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 }
Mezőleképezéseket adhat meg, ha a mezőnév vagy a típus eltérést mutat, vagy ha egy forrásmező több verziójára van szüksége a keresési indexben. A Cél mező a keresési indexben lévő mező neve.
"fieldMappings" : [ { "sourceFieldName" : "Description", "targetFieldName" : "HotelDescription" } ]
További információt az egyéb tulajdonságokról az Indexelő létrehozása című témakörben talál.
Az indexelő automatikusan fut a létrehozásakor. Ezt úgy akadályozhatja meg, hogy a "letiltva" értéket igaz értékre állítja. Az indexelő végrehajtásának szabályozásához futtasson egy indexelőt igény szerint , vagy ütemezze.
Az indexelő állapotának ellenőrzése
Az indexelőzmények állapotának és végrehajtási előzményeinek monitorozásához ellenőrizze az indexelőzményeket az Azure Portalon, vagy küldjön egy Get Indexer Status REST APIrequest parancsot
A keresési szolgáltatás oldalán nyissa meg a Kereséskezelési>indexelőket.
Válasszon ki egy indexelőzményt a konfigurációs és végrehajtási előzmények eléréséhez.
Válasszon ki egy adott indexelőfeladatot a részletek, figyelmeztetések és hibák megtekintéséhez.
A végrehajtási előzmények legfeljebb 50 legutóbbi végrehajtást tartalmaznak, amelyek fordított időrendi sorrendben vannak rendezve, hogy a legújabb végrehajtás legyen az első.
Következő lépések
További információ az indexelő futtatásáról, a monitorozás állapotáról vagy az indexelő végrehajtásának ütemezéséről. Az alábbi cikkek azOkra az indexelőkre vonatkoznak, amelyek tartalmat kérnek le az Azure Storage-ból: