Condividi tramite


Creare un indicizzatore in Azure AI Search

Gli indicizzatori possono essere configurati per l'esecuzione in base a una pianificazione quando si imposta la proprietà schedule. Alcune situazioni in cui la pianificazione dell'indicizzatore è utile possono essere:

  • I dati di origine cambiano nel tempo e si vuole che l'indicizzatore elabori automaticamente la differenza.
  • I dati di origine sono molto grandi ed è necessaria una pianificazione ricorrente per indicizzare tutto il contenuto.
  • Un indice viene popolato da più origini, usando più indicizzatori, e si vuole sfalsare i processi per ridurre i conflitti.

Quando l'indicizzazione non può essere completata all'interno della tipica finestra di elaborazione di 2 ore, è possibile pianificare l'esecuzione dell'indicizzatore su una frequenza di 2 ore per processare un volume elevato di dati. Se l'origine dati supporta la logica di rilevamento delle modifiche, gli indicizzatori possono selezionare automaticamente la posizione in cui sono stati interrotti in ogni esecuzione.

Quando un indicizzatore viene pianificato, mantiene quella pianificazione fino a quando non si cancella l'intervallo o l'ora di inizio, oppure si imposta disabled su true. Lasciare l'indicizzatore pianificato quando non c'è nulla da elaborare non influirà sulle prestazioni del sistema. Il controllo del contenuto modificato è un'operazione relativamente veloce.

Prerequisiti

  • Indicizzatore valido configurato con un'origine dati e un indice.

  • Rilevamento delle modifiche nell'origine dati. Archiviazione di Azure e SharePoint hanno il rilevamento delle modifiche predefinito. È necessario abilitare manualmente altre origini dati, ad esempio Azure SQL e Azure Cosmos DB.

Definizione pianificazione

Una pianificazione fa parte della definizione dell'indicizzatore. Se la proprietà schedule viene omessa, l'indicizzatore verrà eseguito solo su richiesta. La proprietà ha due parti.

Proprietà Descrizione
"interval" (obbligatorio) Intervallo di tempo tra l'inizio di due esecuzioni consecutive dell'indicizzatore. L'intervallo più piccolo consentito è di 5 minuti e il più lungo è 1440 minuti (24 ore). Il valore deve essere formattato come valore XSD "dayTimeDuration" (un subset limitato di un valore duration ISO 8601 ).

Il modello è:P(nD)(T(nH)(nM)).

Esempi: PT15M ogni 15 minuti, PT2H ogni due ore.
"startTime" (facoltativo) L'ora di inizio viene specificata nell'ora UTC (Coordinated Universal Time). Se omesso, viene utilizzata l'ora corrente. Può trattarsi di un'ora nel passato, cin tal caso la prima esecuzione viene pianificata come se l'indicizzatore fosse stato continuamente in funzione sin dall'ora di inizio.

L'esempio seguente presenta una pianificazione che inizia il 1° gennaio a mezzanotte e viene eseguita ogni due ore.

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

Configurare la pianificazione

Le pianificazioni vengono specificate in una definizione dell'indicizzatore. Per configurare una pianificazione, è possibile usare il portale di Azure, le API REST o Azure SDK.

  1. Accedere al portale di Azure e aprire la pagina del servizio di ricerca.
  2. Nel riquadro di spostamento a sinistra, selezionare Indicizzatori.
  3. Aprire un indicizzatore.
  4. Seleziona Impostazioni.
  5. Scorrere verso il basso fino a Pianificazione, quindi scegliere Oraria, Giornaliera o Personalizzata per impostare una data, un'ora o un intervallo personalizzato specifico.

Passare alla scheda Definizione indicizzatore (JSON) nella parte superiore dell'indice, per visualizzare la definizione di pianificazione in formato XSD.

Domande frequenti sul comportamento di pianificazione

È possibile eseguire più processi dell'indicizzatore in parallelo?

È possibile eseguire più indicizzatori contemporaneamente, ma ogni indicizzatore è una singola istanza. Non è possibile eseguire due copie dello stesso indicizzatore contemporaneamente.

Per l'indicizzazione basata su testo, l'utilità di pianificazione può avviare tutti i processi dell'indicizzatore supportati dal servizio di ricerca, determinato dal numero di unità di ricerca. Ad esempio, se il servizio ha tre repliche e quattro partizioni, è possibile avere 12 processi indicizzatore in esecuzione attiva, sia avviati su richiesta che in base a una pianificazione.

Per l'indicizzazione basata sulle competenze, gli indicizzatori vengono eseguiti in un ambiente di esecuzione specifico. Per questo motivo, il numero di unità di servizio non influisce sul numero di processi indicizzatore basati sulle competenze che è possibile eseguire. È possibile eseguire più indicizzatori basati sulle competenze in parallelo, ma ciò dipende dalla disponibilità del processore di contenuto nell'ambiente di esecuzione.

I processi pianificati vengono sempre avviati all'ora designata?

I processi dell'indicizzatore possono essere inseriti in coda e potrebbero non essere avviati esattamente al momento della pubblicazione, a seconda del carico di lavoro di elaborazione e di altri fattori. Ad esempio, se un indicizzatore continua a essere in esecuzione quando l'esecuzione pianificata successiva è impostata per l'avvio, l'esecuzione in sospeso viene posticipata fino alla successiva occorrenza pianificata, consentendo il completamento del processo corrente.

Ecco un esempio per rendere il discorso più concreto. Si supponga di configurare una pianificazione dell'indicizzatore con un intervallo e un'ora di inizio il 1° gennaio 2024 alle 8.00.00 UTC. Ecco cosa può accadere quando un'esecuzione dell'indicizzatore richiede più di un'ora:

  1. La prima esecuzione dell'indicizzatore inizia il 1° gennaio 2024 alle 8:00 UTC. Si supponga che l'esecuzione richieda 20 minuti (o qualsiasi quantità di tempo inferiore a 1 ora).

  2. La seconda esecuzione inizia il 1° gennaio 2024 alle 9:00 UTC. Si supponga che l'esecuzione richieda 70 minuti, più di un'ora, e non verrà completata fino alle 10:10 UTC.

  3. La terza esecuzione è pianificata per le 10:00 UTC, ma in quel momento l'esecuzione precedente è ancora in esecuzione. Questa esecuzione pianificata viene quindi ignorata. L'esecuzione successiva dell'indicizzatore non verrà avviata fino alle 11:00 UTC.

Nota

Se si hanno requisiti di esecuzione rigorosi dell'indicizzatore che sono sensibili al tempo, è consigliabile usare il modello API push in modo da poter controllare direttamente la pipeline di indicizzazione.

Cosa accade se l'indicizzazione ha esito negativo ripetutamente nello stesso documento?

Se un indicizzatore è impostato su una determinata pianificazione, ma si verifica ripetutamente un errore nello stesso documento, l'indicizzatore inizierà a essere eseguito su un intervallo meno frequente (fino all'intervallo massimo di almeno una volta ogni 2 ore o 24 ore, a seconda di diversi fattori di implementazione) fino a quando non viene nuovamente eseguito correttamente. Se si ritiene di aver risolto il problema sottostante, è possibile eseguire manualmente l'indicizzatore e, se l'indicizzazione riesce, l'indicizzatore tornerà alla pianificazione regolare.

Passaggi successivi

Per gli indicizzatori eseguiti in base a una pianificazione, è possibile monitorare le operazioni recuperando lo stato dal servizio di ricerca o ottenere informazioni dettagliate abilitando la registrazione delle risorse.