Släppa och återskapa ett index i Azure AI Search

Den här artikeln beskriver hur du släpper och återskapar ett Azure AI Search-index. Den förklarar de omständigheter under vilka återskapanden krävs och ger rekommendationer för att minimera effekterna av återskapanden på pågående frågebegäranden. Om du måste återskapa ofta rekommenderar vi att du använder indexalias för att göra det enklare att växla vilket index programmet pekar på.

Under aktiv utveckling är det vanligt att släppa och återskapa index när du itererar över indexdesignen. De flesta utvecklare arbetar med ett litet representativt urval av sina data så att omindexeringen går snabbare.

Ändringar som kräver en ombyggnad

I följande tabell visas de ändringar som kräver att index släpps och återskapas.

Åtgärd beskrivning
Ta bort ett fält Om du vill ta bort alla spår av ett fält fysiskt måste du återskapa indexet. När en omedelbar återskapande inte är praktisk kan du ändra programkod för att omdirigera åtkomst bort från ett föråldrat fält eller använda sökfälten och välja frågeparametrar för att välja vilka fält som söks och returneras. Fysiskt finns fältdefinitionen och innehållet kvar i indexet till nästa återskapande, när du tillämpar ett schema som utelämnar fältet i fråga.
Ändra en fältdefinition Omarbetningar av ett fältnamn, datatyp eller specifika indexattribut (sökbara, filterbara, sorterbara, fasettbara) kräver en fullständig återskapande.
Tilldela en analysator till ett fält Analysverktyg definieras i ett index, tilldelas till fält och anropas sedan under indexeringen för att informera om hur token skapas. Du kan lägga till en ny analysdefinition till ett index när som helst, men du kan bara tilldela en analysator när fältet skapas. Detta gäller både för egenskaperna analyzer och indexAnalyzer . Egenskapen searchAnalyzer är ett undantag (du kan tilldela den här egenskapen till ett befintligt fält).
Uppdatera eller ta bort en analysdefinition i ett index Du kan inte ta bort eller ändra en befintlig analyskonfiguration (analysverktyg, tokeniserare, tokenfilter eller teckenfilter) i indexet om du inte återskapar hela indexet.
Lägga till ett fält i en förslagsföreläsare Om det redan finns ett fält och du vill lägga till det i en Suggesters-konstruktion återskapar du indexet.
Växla nivåer Uppgraderingar på plats stöds inte. Om du behöver mer kapacitet skapar du en ny tjänst och återskapar dina index från grunden. För att automatisera den här processen kan du använda exempelkoden index-backup-restore i den här Azure AI Search .NET-exempellagringsplatsen. Den här appen säkerhetskopierar ditt index till en serie JSON-filer och återskapar sedan indexet i en söktjänst som du anger.

Ändringar utan återskapandekrav

Många andra ändringar kan göras utan att påverka befintliga fysiska strukturer. Mer specifikt kräver följande ändringar inte att indexet återskapas. För dessa ändringar kan du uppdatera en befintlig indexdefinition med dina ändringar.

  • Lägg till ett nytt fält
  • Ange det hämtningsbara attributet för ett befintligt fält
  • Uppdatera searchAnalyzer på ett fält med ett befintligt indexAnalyzer
  • Lägg till en ny analysdefinition i ett index (som kan tillämpas på nya fält)
  • Lägga till, uppdatera eller ta bort bedömningsprofiler
  • Lägga till, uppdatera eller ta bort CORS-inställningar
  • Lägg till, uppdatera eller ta bort synonymen Kartor
  • Lägga till, uppdatera eller ta bort semantiska konfigurationer

När du lägger till ett nytt fält får befintliga indexerade dokument ett null-värde för det nya fältet. Vid en framtida datauppdatering ersätter värden från externa källdata de null-värden som lagts till av Azure AI Search. Mer information om hur du uppdaterar indexinnehåll finns i Lägga till, uppdatera eller ta bort dokument.

Återskapa ett index

Under utvecklingen ändras indexschemat ofta. Du kan planera för det genom att skapa index som kan tas bort, återskapas och läsas in på nytt snabbt med en liten representativ datauppsättning.

För program som redan är i produktion rekommenderar vi att du skapar ett nytt index som körs sida vid sida med ett befintligt index för att undvika frågeavbrott. Programkoden ger omdirigering till det nya indexet.

  1. Sök efter utrymme. tjänsten Search omfattas av maximalt antal index, beroende på tjänstnivå. Se till att du har plats för ett andra index.

  2. Avgör om en ombyggnad krävs. Om du bara lägger till fält eller ändrar en del av indexet som inte är relaterade till fält, kanske du bara kan uppdatera definitionen utan att ta bort, återskapa och läsa in den på nytt.

  3. Hämta en indexdefinition om du behöver den för framtida referens.

  4. Släpp det befintliga indexet, förutsatt att du inte kör nya och gamla index sida vid sida.

    Alla frågor som riktar sig till indexet tas bort omedelbart. Kom ihåg att det inte går att ångra borttagningen av ett index, vilket förstör fysisk lagring för fältsamlingen och andra konstruktioner. Pausa för att tänka på konsekvenserna innan du släpper det.

  5. Skapa ett reviderat index, där brödtexten i begäran innehåller ändrade eller ändrade fältdefinitioner.

  6. Läs in indexet med dokument från en extern källa.

När du skapar indexet allokeras fysisk lagring för varje fält i indexschemat, med ett inverterat index som skapats för varje sökbart fält. Fält som inte kan sökas kan användas i filter eller uttryck, men som inte har inverterade index och inte är fulltext- eller fuzzy-sökbara. När indexet återskapas tas dessa inverterade index bort och återskapas baserat på det indexschema som du anger.

När du läser in indexet fylls varje fälts inverterade index med alla unika, tokeniserade ord från varje dokument, med en karta till motsvarande dokument-ID: er. När du till exempel indexerar en hotelldatauppsättning kan ett inverterat index som skapats för ett City-fält innehålla termer för Seattle, Portland och så vidare. Dokument som inkluderar Seattle eller Portland i fältet Stad skulle ha sitt dokument-ID listat tillsammans med termen. Vid alla åtgärder för att lägga till, uppdatera eller ta bort uppdateras villkoren och dokument-ID-listan i enlighet med detta.

Balansera arbetsbelastningar

Indexering körs inte i bakgrunden, men söktjänsten balanserar alla indexeringsjobb mot pågående frågor. Under indexeringen kan du övervaka frågebegäranden i portalen för att säkerställa att frågorna slutförs i tid.

Om indexering av arbetsbelastningar introducerar oacceptabla nivåer av frågesvarstid utför du prestandaanalys och granskar dessa prestandatips för potentiell åtgärd.

Sök efter uppdateringar

Du kan börja köra frågor mot ett index så snart det första dokumentet har lästs in. Om du känner till ett dokuments ID returnerar REST-API:et för uppslagsdokument det specifika dokumentet. För bredare testning bör du vänta tills indexet är helt inläst och sedan använda frågor för att verifiera den kontext som du förväntar dig att se.

Du kan använda Sökutforskaren eller en REST-klient för att söka efter uppdaterat innehåll.

Om du har lagt till eller bytt namn på ett fält använder du $select för att returnera fältet: search=*&$select=document-id,my-new-field,some-old-field&$count=true

Se även