Spouštění nebo resetování indexerů, dovedností nebo dokumentů

Ve službě Azure AI Search existuje několik způsobů, jak spustit indexer:

Tento článek vysvětluje, jak spouštět indexery na vyžádání s resetováním a bez nich. Popisuje také provádění indexeru, dobu trvání a souběžnost.

Jak se indexery připojují k prostředkům Azure

Indexery jsou jedním z několika subsystémů, které provádějí přesáhlá odchozí volání jiných prostředků Azure. Z hlediska rolí Azure nemají indexery samostatné identity: připojení z vyhledávacího webu k jinému prostředku Azure se provádí pomocí spravované identity přiřazené systémem nebo uživatelem přiřazenou spravovanou identitou vyhledávací služby. Pokud se indexer připojí k prostředku Azure ve virtuální síti, měli byste pro toto připojení vytvořit sdílené privátní propojení . Další informace o zabezpečených připojeních najdete v tématu Zabezpečení ve službě Azure AI Search.

Spuštění indexeru

Vyhledávací služba spouští jednu úlohu indexeru na jednotku vyhledávání. Každá vyhledávací služba začíná jednou jednotkou vyhledávání, ale každý nový oddíl nebo replika zvyšuje jednotky vyhledávání vaší služby. Počet jednotek vyhledávání můžete zkontrolovat v části Základní informace na portálu na stránce Přehled . Pokud potřebujete souběžné zpracování, ujistěte se, že máte dostatek replik. Indexery se nespouštějí na pozadí, takže pokud je služba pod tlakem, můžete zjistit větší omezování dotazů než obvykle.

Následující snímek obrazovky ukazuje počet jednotek hledání, které určují, kolik indexerů může běžet najednou.

Snímek obrazovky s částí Základy stránky přehledu zobrazující jednotky hledání

Po spuštění indexeru ho nemůžete pozastavit ani zastavit. Provádění indexeru se zastaví, pokud nejsou k dispozici žádné další dokumenty k načtení nebo aktualizaci, nebo při dosažení maximálního časového limitu.

Můžete spustit více indexerů najednou za předpokladu, že je dostatečná kapacita, ale každý samotný indexer je jedna instance. Spuštění nové instance, zatímco indexer je již spuštěn, způsobí tuto chybu: "Failed to run indexer "<indexer name>" error: "Another indexer invocation is currently in progress; concurrent invocations are not allowed."

Úloha indexeru se spouští ve spravovaném spouštěcím prostředí. V současné době existují dvě prostředí. Nemůžete řídit ani konfigurovat, které prostředí se používá. Azure AI Search určuje prostředí na základě složení úloh a schopnost služby přesunout úlohu indexeru do procesoru obsahu (některé funkce zabezpečení blokují víceklientské prostředí).

Mezi spouštěcí prostředí indexeru patří:

  • Prostředí privátního spouštění, které běží na uzlech vyhledávání specifické pro vaši vyhledávací službu.

  • Víceklientských prostředí s procesory obsahu, spravovanými a zabezpečenými Microsoftem bez dalších poplatků. Toto prostředí se používá k přesměrování výpočetního zpracování náročného na zpracování a ponechání prostředků specifických pro službu k dispozici pro rutinní operace. Kdykoli je to možné, většina úloh indexeru se spustí v prostředí s více tenanty.

Omezení indexeru se pro každé prostředí liší:

Úloha Maximální doba trvání Maximální počet úloh Spouštěcí prostředí
Privátní spuštění 24 hodin Jedna úloha indexeru na jednotkuvyhledávání 1. Indexování se nespustí na pozadí. Místo toho vyhledávací služba vyrovnává všechny úlohy indexování proti probíhajícím dotazům a akcím správy objektů (například vytváření nebo aktualizace indexů). Při spouštění indexerů byste měli očekávat, že pokud jsou svazky indexování velké, měli byste očekávat latenci dotazů.
Více tenantů 2 hodiny 2 Neurčitá 3 Vzhledem k tomu, že cluster pro zpracování obsahu je víceklientní, přidají se uzly, aby splňovaly poptávku. Pokud dojde ke zpoždění při spuštění na vyžádání nebo plánovaném spuštění, důvodem je pravděpodobně to, že systém buď přidává uzly, nebo čeká na to, až bude k dispozici.

1 Vyhledávací jednotky mohou být flexibilní kombinace oddílů a replik, ale úlohy indexeru nejsou svázané s jedním nebo druhým. Jinými slovy, pokud máte 12 jednotek, můžete mít 12 úloh indexeru spuštěných souběžně v privátním spuštění bez ohledu na to, jak se jednotky vyhledávání nasazují.

2 Pokud jsou ke zpracování všech dat potřeba více než dvě hodiny, povolte detekci změn a naplánujte, aby indexer běžel ve dvouhodinovém intervalu. Další strategie najdete v tématu Indexování velké datové sady .

3 "Neurčitá" znamená, že limit není kvantifikován počtem úloh. Některé úlohy, jako je zpracování sady dovedností, se můžou spouštět paralelně, což může vést k mnoha úlohám, i když je zapojen pouze jeden indexer. I když prostředí neukládá omezení, platí omezení indexeru pro vaši vyhledávací službu.

Spustit bez resetování

Operace Spuštění indexeru rozpozná a zpracuje pouze to, co je nutné k synchronizaci indexu vyhledávání se změnami v podkladovém zdroji dat. Přírůstkové indexování začíná vyhledáním interní horní meze pro vyhledání naposledy aktualizovaného vyhledávacího dokumentu, který se stane výchozím bodem pro provádění indexeru v nových a aktualizovaných dokumentech ve zdroji dat.

Detekce změn je nezbytná pro určení toho, co je nového nebo aktualizováno ve zdroji dat. Indexery používají možnosti detekce změn podkladového zdroje dat k určení toho, co je nového nebo aktualizováno ve zdroji dat.

  • Azure Storage má integrovanou detekci změn prostřednictvím vlastnosti LastModified.

  • Aby indexer mohl číst nové a aktualizované řádky, musí být nakonfigurované jiné zdroje dat, jako je Azure SQL nebo Azure Cosmos DB.

Pokud se podkladový obsah nezmění, operace spuštění nemá žádný vliv. V tomto případě bude historie provádění indexeru indikovat 0\0 zpracovávané dokumenty.

Indexer bude potřeba resetovat, jak je vysvětleno v další části, aby se znovu zpracoval v plném rozsahu.

Resetování indexerů

Po počátečním spuštění indexer sleduje, které vyhledávací dokumenty byly indexovány prostřednictvím interní horní meze. Značka se nikdy nezoznačí, ale indexer interně ví, kde byla naposledy zastavena.

Pokud potřebujete znovu sestavit celý index nebo jeho část, můžete vymazat horní mez indexeru resetováním. Rozhraní API pro resetování jsou dostupná na nižších úrovních v hierarchii objektů:

Po resetování postupujte podle příkazu Spustit a znovu zpracujte nové a existující dokumenty. Osamocené dokumenty hledání, které nemají žádný protějšk ve zdroji dat, není možné odebrat prostřednictvím resetování nebo spuštění. Pokud potřebujete odstranit dokumenty, přečtěte si místo toho článek Přidání, aktualizace nebo odstranění dokumentů .

Jak resetovat a spouštět indexery

Obnoví horní mez. Všechny dokumenty v indexu vyhledávání se označí příznakem pro úplné přepsání bez vložených aktualizací nebo sloučení do existujícího obsahu. Pro indexery se sadou dovedností a ukládáním do mezipaměti pro rozšiřování se resetování indexu také implicitně resetuje.

Skutečná práce nastane, když provedete resetování pomocí příkazu Spustit:

  • Všechny nové dokumenty nalezené v podkladovém zdroji se přidají do indexu vyhledávání.
  • Všechny dokumenty, které existují ve zdroji dat i v indexu vyhledávání, se přepíšou v indexu vyhledávání.
  • Veškerý obohacený obsah vytvořený ze sad dovedností se znovu sestaví. Mezipaměť rozšiřování, pokud je povolená, se aktualizuje.

Jak už jsme si poznamenali, resetování je pasivní operace: Je nutné zpracovat požadavek Spustit a znovu sestavit index.

Operace resetování/spuštění se vztahují na index vyhledávání nebo úložiště znalostí, na konkrétní dokumenty nebo projekce a na rozšiřování v mezipaměti, pokud resetování explicitně nebo implicitně zahrnuje dovednosti.

Resetování platí také pro operace vytváření a aktualizace. Neaktivuje odstranění nebo vyčistí osamocené dokumenty v indexu vyhledávání. Další informace o odstraňování dokumentů naleznete v tématu Přidání, aktualizace nebo odstranění dokumentů.

Po resetování indexeru nemůžete akci vrátit zpět.

  1. Přihlaste se k webu Azure Portal a otevřete stránku vyhledávací služby.

  2. Na stránce Přehled vyberte kartu Indexery.

  3. Vyberte indexer.

  4. Vyberte příkaz Obnovit a akci potvrďte výběrem možnosti Ano.

  5. Aktualizujte stránku, aby se zobrazil stav. Položku můžete vybrat a zobrazit její podrobnosti.

  6. Vyberte Spustit , chcete-li spustit zpracování indexeru, nebo počkejte na další plánované spuštění.

    Snímek obrazovky se stránkou portálu pro spuštění indexeru se zvýrazněným příkazem Obnovit

Resetování dovedností (Preview)

U indexerů, které mají sady dovedností, můžete resetovat jednotlivé dovednosti a vynutit zpracování pouze této dovednosti a všech podřízených dovedností, které závisí na jeho výstupu. Mezipaměť rozšiřování, pokud jste ji povolili, se také aktualizuje.

Resetování dovedností je momentálně dostupné api-version=2020-06-30-Preview jenom prostřednictvím REST nebo novějšího.

POST /skillsets/[skillset name]/resetskills?api-version=2020-06-30-Preview
{
    "skillNames" : [
        "#1",
        "#5",
        "#6"
    ]
}

Můžete určit jednotlivé dovednosti, jak je uvedeno v předchozím příkladu, ale pokud některá z těchto dovedností vyžaduje výstup z nezasílaných dovedností (#2 až #4), spustí se nesečtené dovednosti, pokud mezipaměť nemůže poskytnout potřebné informace. Aby to bylo pravda, nesmí mít rozšíření v mezipaměti pro dovednosti č. 2 až #4 závislost na #1 (uvedené pro resetování).

Pokud nejsou zadány žádné dovednosti, spustí se celá sada dovedností a pokud je povolená ukládání do mezipaměti, mezipaměť se také aktualizuje.

Nezapomeňte zpracovat spuštění indexeru a vyvolat skutečné zpracování.

Resetování dokumentace (Preview)

Rozhraní API pro resetování dokumentů přijímá seznam klíčů dokumentů, abyste mohli aktualizovat konkrétní dokumenty. Pokud je zadáno, parametry resetování se stanou jediným determinantem toho, co se zpracuje, bez ohledu na jiné změny v podkladových datech. Pokud se například od posledního spuštění indexeru přidalo nebo aktualizovalo 20 objektů blob, ale resetujete jenom jeden dokument, zpracuje se jenom tento dokument.

Na základě jednotlivých dokumentů se všechna pole v daném vyhledávacím dokumentu aktualizují hodnotami ze zdroje dat. Nemůžete vybrat a zvolit, která pole se mají aktualizovat.

Pokud je dokument rozšířen prostřednictvím sady dovedností a obsahuje data uložená v mezipaměti, vyvolá se sada dovedností pouze pro zadané dokumenty a mezipaměť se aktualizuje pro reprocesované dokumenty.

Při prvním testování tohoto rozhraní API vám následující rozhraní API můžou pomoct ověřit a otestovat chování:

  1. Voláním funkce Získat stav indexeru s verzí api-version=2020-06-30-Preview rozhraní API nebo novějším zkontrolujete stav resetování a stav spuštění. Informace o žádosti o resetování najdete na konci odpovědi na stav.

  2. Voláním funkce Obnovit dokumenty s verzí api-version=2020-06-30-Preview rozhraní API nebo novějším určíte, které dokumenty se mají zpracovat.

    POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "1001",
            "4452"
        ]
    }
    
    • Klíče dokumentu zadané v požadavku jsou hodnoty z indexu vyhledávání, které se můžou lišit od odpovídajících polí ve zdroji dat. Pokud si nejste jisti hodnotou klíče, odešlete dotaz , který vrátí hodnotu. Můžete použít select k vrácení pouze pole klíče dokumentu.

    • Pro objekty blob, které jsou analyzovány do více vyhledávacích dokumentů (kde parsingMode je nastavena na jsonLines nebo jsonArrays nebo delimitedText), klíč dokumentu je generován indexerem a může být pro vás neznámý. V tomto scénáři se dotaz na klíč dokumentu vrátí správnou hodnotu.

  3. Voláním indexeru spuštění (libovolné verze rozhraní API) zpracujete zadané dokumenty. Indexují se jenom tyto konkrétní dokumenty.

  4. Volání spustit indexeru podruhé ke zpracování z poslední horní horní meze.

  5. Voláním prohledat dokumenty můžete vyhledat aktualizované hodnoty a také vrátit klíče dokumentu, pokud si nejste jisti hodnotou. Použijte "select": "<field names>" , pokud chcete omezit, která pole se zobrazí v odpovědi.

Přepsání seznamu klíčů dokumentu

Volání rozhraní API pro resetování dokumentů několikrát s různými klíči připojí nové klíče k seznamu klíčů dokumentů. Volání rozhraní API s parametrem overwrite nastaveným na true přepíše aktuální seznam novým seznamem:

POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
{
    "documentKeys" : [
        "200",
        "630"
    ],
    "overwrite": true
}

Kontrola stavu resetování currentState

Pokud chcete zkontrolovat stav resetování a zjistit, které klíče dokumentu se zařadí do fronty ke zpracování, postupujte podle těchto kroků.

  1. Stav volání Získat indexer s nebo novějším api-version=06-30-2020-Preview .

    Rozhraní API verze Preview vrátí currentState část, která se nachází na konci odpovědi.

    "currentState": {
        "mode": "indexingResetDocs",
        "allDocsInitialTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}",
        "allDocsFinalTrackingState": "{\"LastFullEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"LastAttemptedEnumerationStartTime\":\"2021-02-06T19:02:07.0323764+00:00\",\"NameHighWaterMark\":null}",
        "resetDocsInitialTrackingState": null,
        "resetDocsFinalTrackingState": null,
        "resetDocumentKeys": [
            "200",
            "630"
        ]
    }
    
  2. Zkontrolujte režim:

    V případě resetování dovedností by měl být režim nastavený na indexingAllDocs (protože se to týká potenciálně všech dokumentů, pokud jde o pole naplněná rozšiřováním AI).

    V případě resetování dokumentů by měl být režim nastaven na indexingResetDocshodnotu . Indexer si tento stav zachová, dokud se nezpracují všechny klíče dokumentu zadané ve volání dokumentů resetování, během které se během operace nespustí žádné jiné úlohy indexeru. Vyhledání všech dokumentů v seznamu klíčů dokumentů vyžaduje prolomení každého dokumentu, aby se na klíč vyhledaly a odpovídaly, a to může chvíli trvat, pokud je sada dat velká. Pokud kontejner objektů blob obsahuje stovky objektů blob a dokumenty, které chcete resetovat, jsou na konci, indexer nenajde odpovídající objekty blob, dokud se nekontrolují všechny ostatní.

  3. Po opětovném zpracování dokumentů znovu spusťte příkaz Získat stav indexeru. Indexer se vrátí do indexingAllDocs režimu a zpracuje všechny nové nebo aktualizované dokumenty při dalším spuštění.

Další kroky

Rozhraní API pro resetování se používají k informování rozsahu dalšího spuštění indexeru. Pro skutečné zpracování budete muset vyvolat spuštění indexeru na vyžádání nebo povolit naplánované úloze dokončení práce. Po dokončení spuštění se indexer vrátí k normálnímu zpracování bez ohledu na to, jestli je to v plánu nebo zpracování na vyžádání.

Po resetování a opětovném spuštění úloh indexeru můžete monitorovat stav z vyhledávací služby nebo získat podrobné informace prostřednictvím protokolování prostředků.