Schemalägga en indexerare i Azure AI Search

Indexerare kan konfigureras att köras enligt ett schema när du anger egenskapen schedule . Några situationer där indexerarens schemaläggning är användbar är:

  • Källdata ändras med tiden och du vill att indexeraren ska bearbeta skillnaden automatiskt.
  • Källdata är mycket stora och du behöver ett återkommande schema för att indexering av allt innehåll.
  • Ett index fylls i från flera källor med flera indexerare och du vill flytta jobben för att minska konflikterna.

När indexeringen inte kan slutföras inom det typiska 2-timmars bearbetningsfönstret kan du schemalägga att indexeraren ska köras på en 2-timmars kadens för att arbeta med en stor mängd data. Så länge datakällan stöder logik för ändringsidentifiering kan indexerare automatiskt fortsätta där de slutade på varje körning.

När en indexerare är enligt ett schema förblir den enligt schemat tills du rensar intervallet eller starttiden, eller är inställd disabled på true. Att lämna indexeraren enligt ett schema när det inte finns något att bearbeta påverkar inte systemets prestanda. Att söka efter ändrat innehåll är en relativt snabb åtgärd.

Förutsättningar

  • En giltig indexerare som konfigurerats med en datakälla och ett index.

  • Ändringsidentifiering i datakällan. Azure Storage och SharePoint har inbyggd ändringsidentifiering. Andra datakällor, till exempel Azure SQL och Azure Cosmos DB , måste aktiveras manuellt.

Schemadefinition

Ett schema är en del av indexerarens definition. Om egenskapen schedule utelämnas körs indexeraren endast på begäran. Egenskapen har två delar.

Property beskrivning
"intervall" (krävs) Tiden mellan starten av två efterföljande indexerarekörningar. Det minsta tillåtna intervallet är 5 minuter och det längsta är 1 440 minuter (24 timmar). Det måste formateras som ett XSD-värde "dayTimeDuration" (en begränsad delmängd av ett ISO 8601-varaktighetsvärde ).

Mönstret för detta är: P(nD)(T(nH)(nM)).

Exempel: PT15M var 15:e minut för PT2H varannan timme.
"startTime" (valfritt) Starttiden anges i samordnad universell tid (UTC). Om den utelämnas används den aktuella tiden. Den här tiden kan vara tidigare, i vilket fall den första körningen schemaläggs som om indexeraren har körts kontinuerligt sedan den ursprungliga starttiden.

Följande exempel är ett schema som börjar den 1 januari vid midnatt och körs varannan timme.

{
    "dataSourceName" : "hotels-ds",
    "targetIndexName" : "hotels-idx",
    "schedule" : { "interval" : "PT2H", "startTime" : "2024-01-01T00:00:00Z" }
}

Konfigurera ett schema

Scheman anges i en indexeraredefinition. Om du vill konfigurera ett schema kan du använda Azure-portalen, REST-API:er eller en Azure SDK.

  1. Logga in på Azure-portalen och öppna söktjänstsidan.
  2. I det vänstra navigeringsfönstret väljer du Indexerare.
  3. Öppna en indexerare.
  4. Välj Inställningar.
  5. Rulla ned till Schema och välj sedan Varje timme, Dagligen eller Anpassad för att ange ett specifikt datum, tid eller anpassat intervall.

Växla till fliken Indexeringsdefinition (JSON) överst i indexet för att visa schemadefinitionen i XSD-format.

Schemaläggningsbeteende

För textbaserad indexering kan schemaläggaren starta så många indexeringsjobb som söktjänsten stöder, vilket bestäms av antalet sökenheter. Om tjänsten till exempel har tre repliker och fyra partitioner kan du ha 12 indexerarjobb i aktiv körning, oavsett om de initieras på begäran eller enligt ett schema.

Kunskapsbaserade indexerare körs i en annan körningsmiljö. Därför har antalet tjänstenheter ingen betydelse för antalet kompetensbaserade indexeringsjobb som du kan köra. Flera kunskapsbaserade indexerare kan köras parallellt, men det beror på nodtillgängligheten i körningsmiljön.

Även om flera indexerare kan köras samtidigt är en viss indexerare en enda instans. Du kan inte köra två kopior av samma indexerare samtidigt. Om en indexerare fortfarande körs när nästa schemalagda körning är inställd på att starta, skjuts den väntande körningen upp till nästa schemalagda förekomst, vilket gör att det aktuella jobbet kan slutföras.

Låt oss överväga ett exempel för att göra detta mer konkret. Anta att vi konfigurerar ett indexerarschema med ett intervall per timme och en starttid den 1 januari 2024 kl. 08:00:00 UTC. Det här kan hända när en indexerare körs längre än en timme:

  • Den första indexeringskörningen börjar omkring den 1 januari 2024 kl. 08:00 UTC. Anta att den här körningen tar 20 minuter (eller någon tid som är mindre än 1 timme).

  • Den andra körningen startar omkring den 1 januari 2022 kl. 09:00 UTC. Anta att den här körningen tar 70 minuter – mer än en timme – och att den inte slutförs förrän kl. 10:10 UTC.

  • Den tredje körningen är schemalagd att starta kl. 10:00 UTC, men vid den tidpunkten körs den tidigare körningen fortfarande. Den här schemalagda körningen hoppas sedan över. Nästa körning av indexeraren startar inte förrän 11:00 UTC.

Kommentar

Om en indexerare är inställd på ett visst schema men upprepade gånger misslyckas med samma dokument varje gång, börjar indexeraren köras med ett mindre frekvent intervall (upp till det maximala intervallet på minst en gång var 2:e timme eller 24:e timme, beroende på olika implementeringsfaktorer) tills det lyckas igen. Om du tror att du har åtgärdat det underliggande problemet kan du köra indexeraren manuellt, och om indexeringen lyckas återgår indexeraren till sitt vanliga schema.

Nästa steg

För indexerare som körs enligt ett schema kan du övervaka åtgärder genom att hämta status från söktjänsten eller få detaljerad information genom att aktivera resursloggning.