Een index verwijderen en herbouwen in Azure AI Search

In dit artikel wordt uitgelegd hoe u een Azure AI Search-index kunt verwijderen en herbouwen. Hierin wordt uitgelegd onder welke omstandigheden herbouwen vereist zijn en worden aanbevelingen geboden voor het beperken van de gevolgen van herbouw van lopende queryaanvragen. Als u regelmatig opnieuw moet bouwen, raden we u aan om indexaliassen te gebruiken om gemakkelijker te wisselen naar welke index uw toepassing verwijst.

Tijdens de actieve ontwikkeling is het gebruikelijk om indexen te verwijderen en opnieuw te bouwen wanneer u het ontwerp van de index doorgeeft. De meeste ontwikkelaars werken met een kleine representatieve steekproef van hun gegevens, zodat het opnieuw indexeren sneller gaat.

Wijzigingen waarvoor een herbouwing is vereist

De volgende tabel bevat de wijzigingen waarvoor een indexuitval is vereist en opnieuw moeten worden opgebouwd.

Actie Beschrijving
Een veld verwijderen Als u alle traceringen van een veld fysiek wilt verwijderen, moet u de index opnieuw opbouwen. Wanneer een onmiddellijke herbouwing niet praktisch is, kunt u toepassingscode wijzigen om de toegang om te leiden van een verouderd veld of de zoekvelden gebruiken en queryparameters selecteren om te kiezen welke velden worden doorzocht en geretourneerd. Fysiek blijft de velddefinitie en inhoud in de index staan totdat u het volgende opnieuw maakt, wanneer u een schema toepast dat het betreffende veld weglaat.
Een velddefinitie wijzigen Revisies van een veldnaam, gegevenstype of specifieke indexkenmerken (doorzoekbaar, filterbaar, sorteerbaar, facetable) vereisen een volledige herbouw.
Een analyse toewijzen aan een veld Analysefuncties worden gedefinieerd in een index, toegewezen aan velden en vervolgens aangeroepen tijdens het indexeren om te informeren hoe tokens worden gemaakt. U kunt op elk gewenst moment een nieuwe analysedefinitie toevoegen aan een index, maar u kunt alleen een analyse toewijzen wanneer het veld wordt gemaakt. Dit geldt voor zowel de eigenschappen analyzer als indexAnalyzer . De eigenschap searchAnalyzer is een uitzondering (u kunt deze eigenschap toewijzen aan een bestaand veld).
Een analysedefinitie in een index bijwerken of verwijderen U kunt een bestaande analyseconfiguratie (analyse, tokenizer, tokenfilter of tekenfilter) in de index niet verwijderen of wijzigen, tenzij u de hele index opnieuw opbouwt.
Een veld toevoegen aan een suggestie Als er al een veld bestaat en u het wilt toevoegen aan een suggesters-constructie , bouwt u de index opnieuw op.
Schakelen tussen lagen In-place upgrades worden niet ondersteund. Als u meer capaciteit nodig hebt, maakt u een nieuwe service en bouwt u uw indexen helemaal opnieuw op. Als u dit proces wilt automatiseren, kunt u de voorbeeldcode voor het herstellen van een back-up maken van indexen gebruiken in deze Azure AI Search .NET-voorbeeldopslagplaats. Deze app maakt een back-up van uw index naar een reeks JSON-bestanden en maakt vervolgens de index opnieuw in een zoekservice die u opgeeft.

Wijzigingen zonder herbouwvereiste

Veel andere wijzigingen kunnen worden aangebracht zonder dat dit van invloed is op bestaande fysieke structuren. Voor de volgende wijzigingen is geen herbouw van een index vereist. Voor deze wijzigingen kunt u een bestaande indexdefinitie bijwerken met uw wijzigingen.

  • Een nieuw veld toevoegen
  • Het kenmerk ophalen voor een bestaand veld instellen
  • SearchAnalyzer bijwerken op een veld met een bestaande indexAnalyzer
  • Een nieuwe analysedefinitie toevoegen in een index (die kan worden toegepast op nieuwe velden)
  • Scoreprofielen toevoegen, bijwerken of verwijderen
  • CORS-instellingen toevoegen, bijwerken of verwijderen
  • Synoniem toevoegen, bijwerken of verwijderen Kaarten
  • Semantische configuraties toevoegen, bijwerken of verwijderen

Wanneer u een nieuw veld toevoegt, krijgen bestaande geïndexeerde documenten een null-waarde voor het nieuwe veld. Bij een toekomstige gegevensvernieuwing vervangen waarden uit externe brongegevens de null's die door Azure AI Search worden toegevoegd. Zie Documenten toevoegen, bijwerken of verwijderen voor meer informatie over het bijwerken van indexinhoud.

Een index herbouwen

Tijdens de ontwikkeling wordt het indexschema regelmatig gewijzigd. U kunt dit plannen door indexen te maken die snel kunnen worden verwijderd, opnieuw gemaakt en opnieuw geladen met een kleine representatieve gegevensset.

Voor toepassingen die al in productie zijn, raden we u aan een nieuwe index te maken die naast een bestaande index wordt uitgevoerd om uitvaltijd van query's te voorkomen. Uw toepassingscode biedt omleiding naar de nieuwe index.

  1. Controleer of er ruimte is. Search-service zijn onderworpen aan het maximum aantal indexen, variërend per servicelaag. Zorg ervoor dat u ruimte hebt voor een tweede index.

  2. Bepaal of een herbouw vereist is. Als u alleen velden toevoegt of een deel van de index wijzigt die niet is gerelateerd aan velden, kunt u de definitie mogelijk bijwerken zonder deze te verwijderen, opnieuw te maken en volledig opnieuw te laden.

  3. Haal een indexdefinitie op voor het geval u deze nodig hebt voor toekomstige naslaginformatie.

  4. Verwijder de bestaande index, ervan uitgaande dat u geen nieuwe en oude indexen naast elkaar uitvoert.

    Query's die gericht zijn op die index, worden onmiddellijk verwijderd. Houd er rekening mee dat het verwijderen van een index niet ongedaan kan worden gemaakt, waardoor fysieke opslag voor de verzameling velden en andere constructies wordt vernietigd. Pauzeer om na te denken over de gevolgen voordat u deze neervalt.

  5. Maak een herziene index, waarbij de hoofdtekst van de aanvraag gewijzigde of gewijzigde velddefinities bevat.

  6. Laad de index met documenten van een externe bron.

Wanneer u de index maakt, wordt fysieke opslag toegewezen voor elk veld in het indexschema, met een omgekeerde index die voor elk doorzoekbaar veld is gemaakt. Velden die niet doorzoekbaar zijn, kunnen worden gebruikt in filters of expressies, maar hebben geen omgekeerde indexen en zijn niet in volledige tekst of fuzzy doorzoekbaar. Bij het opnieuw opbouwen van een index worden deze omgekeerde indexen verwijderd en opnieuw gemaakt op basis van het indexschema dat u opgeeft.

Wanneer u de index laadt, wordt de omgekeerde index van elk veld gevuld met alle unieke, tokenized woorden uit elk document, met een kaart met bijbehorende document-id's. Wanneer u bijvoorbeeld een gegevensset hotels indexeert, kan een omgekeerde index die is gemaakt voor een veld Plaats termen bevatten voor Seattle, Portland, enzovoort. Documenten met Seattle of Portland in het veld Plaats zouden hun document-id naast de term hebben vermeld. Bij elke bewerking toevoegen, bijwerken of verwijderen worden de termen en de lijst met document-id's dienovereenkomstig bijgewerkt.

Workloads verdelen

Indexering wordt niet op de achtergrond uitgevoerd, maar de zoekservice brengt indexeringstaken in balans met lopende query's. Tijdens het indexeren kunt u queryaanvragen in de portal bewaken om ervoor te zorgen dat query's tijdig worden voltooid.

Als het indexeren van workloads onaanvaardbare niveaus van querylatentie introduceert, voert u prestatieanalyse uit en bekijkt u deze prestatietips voor mogelijke risicobeperking.

Controleren op updates

U kunt beginnen met het uitvoeren van query's op een index zodra het eerste document is geladen. Als u de id van een document kent, retourneert de REST API voor opzoekdocument het specifieke document. Voor uitgebreidere tests moet u wachten totdat de index volledig is geladen en vervolgens query's gebruiken om de context te controleren die u verwacht te zien.

U kunt Search Explorer of een REST-client gebruiken om te controleren op bijgewerkte inhoud.

Als u een veld hebt toegevoegd of de naam ervan hebt gewijzigd, gebruikt u $select om dat veld te retourneren: search=*&$select=document-id,my-new-field,some-old-field&$count=true

Zie ook