Indexelők, készségek vagy dokumentumok futtatása vagy alaphelyzetbe állítása

Az Azure AI Searchben többféleképpen is futtathat indexelőt:

Ez a cikk azt ismerteti, hogyan futtathat igény szerinti indexelőket alaphelyzetbe állítással és anélkül. Az indexelő végrehajtását, időtartamát és egyidejűségét is ismerteti.

Hogyan csatlakoznak az indexelők az Azure-erőforrásokhoz?

Az indexelők azon kevés alrendszerek egyike, amelyek kimenő kimenő hívásokat intéznek más Azure-erőforrásokhoz. Az Azure-szerepkörök tekintetében az indexelők nem rendelkeznek külön identitásokkal: a keresőmotor és egy másik Azure-erőforrás közötti kapcsolat egy keresési szolgáltatás rendszerével vagy felhasználó által hozzárendelt felügyelt identitásával jön létre. Ha az indexelő egy virtuális hálózaton lévő Azure-erőforráshoz csatlakozik, akkor létre kell hoznia egy megosztott privát kapcsolatot ehhez a kapcsolathoz. A biztonságos kapcsolatokkal kapcsolatos további információkért tekintse meg az Azure AI Search biztonságával foglalkozó témakört.

Indexelő végrehajtása

A keresési szolgáltatás keresési egységenként egy indexelő feladatot futtat. Minden keresési szolgáltatás egy keresési egységgel kezdődik, de minden új partíció vagy replika növeli a szolgáltatás keresési egységeit. A keresési egységek számát az Áttekintés lap alapvető szakaszában tekintheti meg. Ha egyidejű feldolgozásra van szüksége, győződjön meg arról, hogy rendelkezik elegendő replikával. Az indexelők nem futnak a háttérben, ezért a szokásosnál több lekérdezésszabályozást észlelhet, ha a szolgáltatás nyomás alatt áll.

Az alábbi képernyőképen a keresési egységek száma látható, amely meghatározza, hogy hány indexelő futtatható egyszerre.

Képernyőkép az áttekintési oldal alapvető fontosságú szakaszáról, amelyen a keresési egységek láthatók.

Az indexelő végrehajtásának elindítása után nem szüneteltetheti és nem állíthatja le. Az indexelő végrehajtása leáll, ha nincs több betöltendő vagy frissítendő dokumentum, vagy ha eléri a maximális futási időkorlátot .

Egyszerre több indexelőt is futtathat elegendő kapacitást feltételezve, de maga az indexelő egypéldányos. Ha egy új példányt indít el, miközben az indexelő már végrehajtás alatt áll, a következő hibaüzenet jelenik meg: "Failed to run indexer "<indexer name>" error: "Another indexer invocation is currently in progress; concurrent invocations are not allowed."

Az indexelőfeladat felügyelt végrehajtási környezetben fut. Jelenleg két környezet létezik. A használt környezet nem szabályozható és nem konfigurálható. Az Azure AI Search a feladatösszetétel és a szolgáltatás azon képessége alapján határozza meg a környezetet, hogy egy indexelő feladatot áthelyezzen egy tartalomfeldolgozóba (egyes biztonsági funkciók blokkolják a több-bérlős környezetet).

Az indexelő végrehajtási környezetei a következők:

  • A keresési csomópontokon futó privát végrehajtási környezet, amely a keresési szolgáltatásra jellemző.

  • Több-bérlős környezet tartalomprocesszorokkal, amelyeket a Microsoft felügyel és véd extra költségek nélkül. Ez a környezet a számítási igényes feldolgozás kiszervezésére szolgál, így szolgáltatásspecifikus erőforrások állnak rendelkezésre a rutinműveletek számára. Amikor csak lehetséges, a legtöbb indexelő feladat végrehajtása több-bérlős környezetben történik.

Az indexelők korlátai az egyes környezetekben eltérőek:

Számítási feladat Maximális időtartam Feladatok maximális száma Végrehajtási környezet
Privát végrehajtás 24 óra 1. keresési egységenként egy indexelő feladat. Az indexelés nem fut a háttérben. Ehelyett a keresési szolgáltatás az összes indexelési feladatot kiegyensúlyozni fogja a folyamatban lévő lekérdezésekkel és objektumkezelési műveletekkel (például indexek létrehozásával vagy frissítésével). Indexelők futtatásakor a lekérdezés késésére kell számítania, ha az indexelési kötetek nagyok.
Több-bérlős architektúra 2 óra 2 Határozatlan 3 Mivel a tartalomfeldolgozó fürt több-bérlős, a rendszer csomópontokat ad hozzá az igények kielégítéséhez. Ha késést tapasztal az igény szerinti vagy ütemezett végrehajtásban, annak valószínűleg az az oka, hogy a rendszer csomópontokat ad hozzá, vagy arra vár, hogy elérhetővé váljon.

1 A keresési egységek lehetnek partíciók és replikák rugalmas kombinációi , de az indexelő feladatok nincsenek egyikhez vagy a másikhoz kötve. Más szóval, ha 12 egységgel rendelkezik, 12 indexelő feladat futhat egyidejűleg privát végrehajtásban, függetlenül attól, hogy a keresési egységek hogyan vannak üzembe helyezve.

2 Ha az összes adat feldolgozásához több mint két órára van szükség, engedélyezze a változásészlelést, és ütemezze az indexelő futtatását két órás időközönként. További stratégiákért lásd : Nagy adatkészlet indexelése.

3 "Határozatlan" azt jelenti, hogy a korlátot nem számszerűsíti a feladatok száma. Egyes számítási feladatok, például a készségek feldolgozása párhuzamosan is futtathatók, ami sok feladatot eredményezhet, még ha csak egy indexelő is részt vesz benne. Bár a környezet nem ír elő korlátozásokat, a keresési szolgáltatás indexelőkorlátai továbbra is érvényesek.

Futtatás alaphelyzetbe állítás nélkül

Az Indexelő futtatása művelet csak azt észleli és dolgozza fel, ami a keresési index és a mögöttes adatforrás változásainak szinkronizálásához szükséges. A növekményes indexelés egy belső magas vízjellel kezdődik, amely megkeresi az utolsó frissített keresési dokumentumot, amely az indexelők végrehajtásának kiindulópontja lesz az adatforrás új és frissített dokumentumai felett.

A változásészlelés alapvető fontosságú az adatforrás újdonságainak vagy frissítésének meghatározásához. Az indexelők a mögöttes adatforrás változásészlelési képességeivel határozzák meg az adatforrás újdonságait vagy frissítéseit.

  • Az Azure Storage beépített változásészlelést alkalmaz a LastModified tulajdonságán keresztül.

  • Más adatforrásokat, például az Azure SQL-t vagy az Azure Cosmos DB-t is konfigurálni kell a változásészleléshez, mielőtt az indexelő beolvassa az új és frissített sorokat.

Ha a mögöttes tartalom nem változik, a futtatási műveletnek nincs hatása. Ebben az esetben az indexelőzmények a feldolgozott dokumentumokat jelölik 0\0 .

A teljes újrafeldolgozáshoz alaphelyzetbe kell állítania az indexelőt a következő szakaszban leírtak szerint.

Indexelők alaphelyzetbe állítása

A kezdeti futtatás után az indexelő nyomon követi, hogy mely keresési dokumentumokat indexelték egy belső magas vízjelen keresztül. A jelölő soha nem lesz látható, de belsőleg az indexelő tudja, hol állt le utoljára.

Ha egy index egészét vagy egy részét újra kell építenie, alaphelyzetbe állítással törölheti az indexelő magas vízjelét. A visszaállítási API-k az objektumhierarchiában csökkenő szinten érhetők el:

Az alaphelyzetbe állítás után kövesse a Futtatás parancsot az új és a meglévő dokumentumok újrafeldolgozásához. Az árva keresési dokumentumok, amelyeknek nincs megfelelője az adatforrásban, nem távolíthatók el alaphelyzetbe állítással/futtatással. Ha dokumentumokat szeretne törölni, olvassa el a Dokumentumok hozzáadása, frissítése vagy törlése című témakört.

Indexelők alaphelyzetbe állítása és futtatása

Az alaphelyzetbe állítás törli a magas vízjelet. A keresési indexben lévő összes dokumentum teljes felülírás céljából lesz megjelölve, beágyazott frissítések és meglévő tartalmak egyesítése nélkül. A képességkészlettel és bővítési gyorsítótárazással rendelkező indexelők esetében az index alaphelyzetbe állítása implicit módon alaphelyzetbe állítja a képességkészletet is.

A tényleges munka akkor következik be, ha futtatási paranccsal végez alaphelyzetbe állítást:

  • Minden új dokumentum, amely a mögöttes forrást megtalálta, hozzáadódik a keresési indexhez.
  • Az adatforrásban és a keresési indexben található összes dokumentum felülíródik a keresési indexben.
  • A készségkészletekből létrehozott összes tartalom újraépül. Ha engedélyezve van, a bővítési gyorsítótár frissül.

Ahogy korábban már említettük, az alaphelyzetbe állítás passzív művelet: az index újraépítéséhez egy futtatási kérést kell követnie.

Az alaphelyzetbe állítási/futtatási műveletek keresési indexre vagy tudástárra, adott dokumentumokra vagy előrejelzésekre, valamint gyorsítótárazott bővítésekre vonatkoznak, ha az alaphelyzetbe állítás explicit vagy implicit módon magában foglalja a készségeket.

Az alaphelyzetbe állítás a létrehozási és frissítési műveletekre is vonatkozik. Nem indítja el az árva dokumentumok törlését vagy törlését a keresési indexben. A dokumentumok törléséről további információt a Dokumentumok hozzáadása, frissítése vagy törlése című témakörben talál.

Az indexelő alaphelyzetbe állítása után nem vonhatja vissza a műveletet.

  1. Jelentkezzen be az Azure Portalra , és nyissa meg a keresési szolgáltatás oldalát.

  2. Az Áttekintés lapon válassza az Indexelők lapot.

  3. Jelöljön ki egy indexelőt.

  4. Válassza az Alaphelyzetbe állítás parancsot, majd az Igen elemet a művelet megerősítéséhez.

  5. Frissítse a lapot az állapot megjelenítéséhez. A részletek megtekintéséhez jelölje ki az elemet.

  6. Válassza a Futtatás lehetőséget az indexelő feldolgozásának elindításához, vagy várja meg a következő ütemezett végrehajtást.

    Képernyőkép az Indexelő végrehajtási portál oldaláról, amelyen a Visszaállítás parancs ki van emelve.

A készségek alaphelyzetbe állítása (előzetes verzió)

A képességkészletekkel rendelkező indexelők esetében alaphelyzetbe állíthatja az egyes készségeket, hogy kényszerítse az adott képesség és a kimenetétől függő alsóbb rétegbeli készségek feldolgozását. Ha engedélyezte, a bővítési gyorsítótár is frissül.

Az alaphelyzetbe állítási készségek jelenleg csak REST-alapúak, és elérhetőek rajta keresztül api-version=2020-06-30-Preview vagy később.

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

A fenti példában leírtaknak megfelelően egyéni készségeket is megadhat, de ha ezek közül bármelyikhez nem sorolt készségekből (#2–4) származó kimenetre van szükség, a nem listázatlan készségek akkor futnak, ha a gyorsítótár meg tudja adni a szükséges információkat. Annak érdekében, hogy ez igaz legyen, a 2–4. készségek gyorsítótárazott bővítései nem függhetnek az 1. számtól (az alaphelyzetbe állítás listában).

Ha nincs megadva szakértelem, a teljes képességkészlet végrehajtása, és ha a gyorsítótárazás engedélyezve van, a gyorsítótár is frissül.

Ne felejtse el nyomon követni az Indexelő futtatását a tényleges feldolgozás meghívásához.

Dokumentumok visszaállítása (előzetes verzió)

A Dokumentumok alaphelyzetbe állítása API elfogadja a dokumentumkulcsok listáját, hogy bizonyos dokumentumokat frissíthesse. Ha meg van adva, az alaphelyzetbe állítási paraméterek lesznek a feldolgozás egyetlen meghatározói, függetlenül a mögöttes adatok egyéb változásaitól. Ha például a legutóbbi indexelő futtatása óta 20 blob lett hozzáadva vagy frissítve, de csak egy dokumentumot állít vissza, akkor csak a dokumentum lesz feldolgozva.

Dokumentumonként a keresési dokumentum összes mezője frissül az adatforrás értékeivel. Nem választhatja ki és nem választhatja ki a frissíteni kívánt mezőket.

Ha a dokumentum egy képességkészlettel bővül, és gyorsítótárazott adatokkal rendelkezik, a program csak a megadott dokumentumokhoz hívja meg a készségkészletet, és a gyorsítótár frissül az újrafeldolgozott dokumentumokhoz.

Amikor először teszteli ezt az API-t, az alábbi API-k segíthetnek a viselkedés ellenőrzésében és tesztelésében:

  1. Az indexelő állapotának lekérése API-verzióval vagy újabb verzióval api-version=2020-06-30-Preview az alaphelyzetbe állítás és a végrehajtás állapotának ellenőrzéséhez. Az alaphelyzetbe állítási kérelemről az állapotválasz végén talál információt.

  2. Hívja meg a Dokumentumok alaphelyzetbe állítása API-verzióval vagy újabb verzióval api-version=2020-06-30-Preview , és adja meg, hogy mely dokumentumokat kell feldolgozni.

    POST https://[service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "1001",
            "4452"
        ]
    }
    
    • A kérelemben megadott dokumentumkulcsok a keresési index értékei, amelyek eltérhetnek az adatforrás megfelelő mezőitől. Ha nem biztos a kulcsértékben, küldjön egy lekérdezést az érték visszaadásához. Csak a dokumentumkulcsmező visszaadására használható select .

    • Több keresési dokumentumba (ahol az parsingMode jsonLines vagy jsonArrays vagy delimitedText értékre van állítva), a dokumentumkulcsot az indexelő hozza létre, és ismeretlen lehet Önnek. Ebben az esetben a dokumentumkulcs lekérdezése a megfelelő értéket adja vissza.

  3. A megadott dokumentumok feldolgozásához hívja meg az Indexelő futtatását (bármely API-verziót). Csak az adott dokumentumok vannak indexelve.

  4. Hívja meg az Indexelő futtatását az utolsó magas vízjelből történő feldolgozáshoz.

  5. A keresési dokumentumokban ellenőrizze a frissített értékeket, és ha nem biztos az értékben, adja vissza a dokumentumkulcsokat. Használja "select": "<field names>" , ha korlátozni szeretné, hogy mely mezők jelenjenek meg a válaszban.

A dokumentumkulcsok listájának felülírása

A Dokumentumok visszaállítása API többszöri hívása különböző kulcsokkal hozzáfűzi az új kulcsokat a dokumentumkulcsok alaphelyzetbe állításának listájához. Ha az API-t a overwrite paraméter értéke true értékre állítja, felülírja az aktuális listát az újkal:

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

Ellenőrizze a "currentState" alaphelyzetbe állítási állapotát

Az alaphelyzetbe állítás állapotának ellenőrzéséhez és annak megtekintéséhez, hogy mely dokumentumkulcsok lesznek várólistán feldolgozásra, kövesse az alábbi lépéseket.

  1. Hívja meg az Indexelő állapotának lekérését vagy újabb verziójátapi-version=06-30-2020-Preview.

    Az előzetes verziójú API a currentState válasz végén található szakaszt adja vissza.

    "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. Ellenőrizze a "módot":

    Az Alaphelyzetbe állítási képességek esetében a "mode" értéket kell beállítani indexingAllDocs (mivel az AI-bővítés által kitöltött mezők tekintetében az összes dokumentum érintett lehet).

    A Dokumentumok visszaállítása beállításnál a "mode" értéket kell beállítani indexingResetDocs. Az indexelő mindaddig megőrzi ezt az állapotot, amíg az alaphelyzetbe állítási dokumentumhívásban megadott összes dokumentumkulcs feldolgozásra nem kerül, és ezalatt az idő alatt a művelet előrehaladása alatt más indexelő feladatok nem lesznek végrehajtva. A dokumentumkulcsok listájában lévő összes dokumentum megkereséséhez meg kell törni az egyes dokumentumokat a kulcs megkereséséhez és egyezéséhez, és ez eltarthat egy ideig, ha az adatkészlet nagy. Ha egy blobtároló több száz blobot tartalmaz, és az alaphelyzetbe állítani kívánt dokumentumok a végén vannak, az indexelő csak akkor találja meg a megfelelő blobokat, ha az összes többit először ellenőrizték.

  3. A dokumentumok újrafeldolgozása után futtassa újra az Indexelő állapotának lekérése parancsot. Az indexelő visszatér a indexingAllDocs módba, és a következő futtatáskor feldolgoz minden új vagy frissített dokumentumot.

Következő lépések

Az alaphelyzetbe állítási API-k a következő indexelő futtatásának hatókörének tájékoztatására szolgálnak. A tényleges feldolgozáshoz meg kell hívnia egy igény szerinti indexelő futtatását, vagy engedélyeznie kell egy ütemezett feladat számára a munka befejezését. A futtatás befejezése után az indexelő visszatér a normál feldolgozáshoz, akár ütemezett, akár igény szerinti feldolgozásról van szó.

Az indexelői feladatok alaphelyzetbe állítása és újrafuttatása után a keresési szolgáltatásból figyelheti az állapotot, vagy részletes információkat kérhet le az erőforrásnaplózáson keresztül.