Adatok indexelése Azure Database for MySQL rugalmas kiszolgálóról (előzetes verzió)

Megjegyzés

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Fontos

Az (előzetes verzióban) megjelölt funkciókra, képességekre vagy tulajdonságokra nem vonatkozik szolgáltatási szintű szerződés, nem ajánlott éles számítási feladatokhoz, és az általános elérhetővé válásuk előtt változhatnak vagy korlátozhatók. Az Azure AI Keresés előzetes verziójú kifejezések az összes előzetes verziós funkcióra vonatkoznak, függetlenül attól, hogy önálló vagy egy általánosan elérhető funkció része.

Fontos

Ezek a funkciók és szolgáltatások támogatják a más Microsoft-szolgáltatásokhoz és harmadik féltől származó szolgáltatásokhoz való kapcsolódást. Ezeknek a szolgáltatásoknak a használatára a vonatkozó feltételek vonatkoznak, és a Azure megfelelőségi határán kívüli adatfeldolgozást vagy tárolást, valamint a Azure megfelelőségi határba történő adatáramlást eredményezhetnek.

Az Ön felelőssége annak kezelése, hogy az adatok a szervezet megfelelőségi és földrajzi határain kívülre áramlanak-e, valamint hogy a megfelelő engedélyek, határok és jóváhagyások ki vannak-e építve.

Ön a felelős azért, hogy gondosan áttekintse és tesztelje azokat az alkalmazásokat, amelyeket az adott használati esetek kontextusában hoz létre, és minden megfelelő döntést és testreszabást meghoz. Ez magában foglalja a saját, felelős mesterségesintelligencia-csökkentő megoldások, például metapromptok, tartalomszűrők vagy egyéb biztonsági rendszerek implementálását, valamint annak biztosítását, hogy az alkalmazások megfeleljenek a megfelelő minőségi, megbízhatósági, biztonsági és megbízhatósági szabványoknak. További információ: Azure AI Keresés Átláthatósági megjegyzés.

Az Azure Database for MySQL indexelő (előzetes verzió) Azure Database for MySQL rugalmas kiszolgálóról importál tartalmat egy Azure AI Keresés indexbe. Az indexelő bemenetei egyetlen tábla vagy nézet sorai. A kimenet egy keresési index, amelyben az egyes mezőkben kereshető tartalom található.

Ez a cikk kiegészíti Az indexelő létrehozása olyan információkkal, amelyek Azure Database for MySQL rugalmas kiszolgálóról történő indexelésre vonatkoznak. A REST API-k segítségével egy háromrészes munkafolyamatot mutat be, amely az összes indexelőre jellemző: adatforrás létrehozása, index létrehozása, indexelő létrehozása. Az adatkinyerés az Indexelő létrehozása kérés elküldésekor történik.

Ha magas vízjel határra és puha törlésre van konfigurálva, az indexelő kezeli a MySQL-adatbázis összes módosítási, feltöltési és törlési folyamatát. A keresési index változásait tükrözi. Az adatkinyerés az Indexelő létrehozása kérés elküldésekor történik.

Előfeltételek

Előzetes verzióra vonatkozó korlátozások

A változáskövetés és a törlésészlelés jelenleg nem működik, ha a dátum vagy az időbélyeg minden sorban egységes. Ez a korlátozás egy ismert probléma, amelyet az előzetes verzió frissítésében kell elhárítani. A probléma megoldásáig ne adjon hozzá készségkészletet a MySQL-indexelőhöz.

Az előzetes verzió nem támogatja a geometriatípusokat és a blobokat.

Mint említettük, az indexelők létrehozásához nincs portáltámogatás, de a MySQL-indexelők és -adatforrások a Azure portálon kezelhetők, ha már léteznek. Szerkesztheti például a definíciókat, és alaphelyzetbe állíthatja, futtathatja vagy ütemezheti az indexelőt.

Az adatforrás meghatározása

Az adatforrás definíciója meghatározza az indexelendő adatokat, valamint a hitelesítő adatokat és a szabályzatokat az adatok változásainak azonosításához. Az adatforrás független erőforrásként van definiálva, így több indexelő is használhatja.

Az adatforrás létrehozása vagy frissítése határozza meg a definíciót. Az adatforrás létrehozásakor mindenképpen használjon előzetes REST API-t.

{   
    "name" : "hotel-mysql-ds",
    "description" : "[Description of MySQL data source]",
    "type" : "mysql",
    "credentials" : { 
        "connectionString" : 
            "Server=[MySQLServerName].MySQL.database.azure.com; Port=3306; Database=[DatabaseName]; Uid=[UserName]; Pwd=[Password]; SslMode=Preferred;" 
    },
    "container" : { 
        "name" : "[TableName]" 
    },
    "dataChangeDetectionPolicy" : { 
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "[HighWaterMarkColumn]"
    }
}

Főbb pontok:

  • Állítsa be a (kötelező) értéket type"mysql" .

  • Állítsa credentials ADO.NET kapcsolati karakterláncra. Az Azure portálon a Kapcsolódási sztringek oldalon találhatók a MySQL kapcsolati sztringjei.

  • Állítsa be container a tábla nevét.

  • Adja meg dataChangeDetectionPolicy , hogy az adatok változékonyak-e, és azt szeretné, hogy az indexelő csak az új és frissített elemeket vegye fel a későbbi futtatások során.

  • Ha szeretné eltávolítani a keresési dokumentumokat a keresési indexből, amikor a forráselem törlődik, adja meg a dataDeletionDetectionPolicy beállítást.

Megjegyzés

A tárolónév tulajdonság esetében az érték csak betűk, számok, aláhúzásjelek (_), pontok (.), egykötőjelek (-) és szögletes zárójelek ([]) engedélyezésére korlátozódik.

Index létrehozása

Az indexséma létrehozása vagy frissítése :

{
    "name" : "hotels-mysql-ix",
    "fields": [
        { "name": "ID", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false },
        { "name": "Category", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true  },
        { "name": "City", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
        { "name": "Description", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false  }     
    ]
}

Ha a forrástábla elsődleges kulcsa megegyezik a dokumentumkulcstal (ebben az esetben az "ID"), az indexelő importálja az elsődleges kulcsot dokumentumkulcsként.

Adattípusok leképezése

Az alábbi táblázat megfelelteti a MySQL-adatbázist Azure AI Keresés megfelelőknek. További információért, lásd: Támogatott adattípusok (Azure AI Keresés).

Megjegyzés

Az előzetes verzió nem támogatja a geometriatípusokat és a blobokat.

MySQL-adattípusok Azure AI Keresés mezőtípusok
bool, boolean Edm.Boolean, Edm.String
tinyint, smallint, mediumint, intintegeryear Edm.Int32, Edm.Int64, Edm.String
bigint Edm.Int64, Edm.String
\, \, \ Edm.Double, Edm.String
\, \, \ Edm.DateTimeOffset, Edm.String
char, varchar, tinytext, mediumtexttext, longtext, enum, , settime Edm.String
előjel nélküli numerikus adatok, soros, decimális, tizedes, bit, blob, bináris, geometria N/A

A MySQL-indexelő konfigurálása és futtatása

Az index és az adatforrás létrehozása után készen áll az indexelő létrehozására. Az indexelő konfigurációja meghatározza a futási idő viselkedését vezérlő bemeneteket, paramétereket és tulajdonságokat.

Hozzon létre vagy frissítsen egy indexelőt úgy, hogy megad neki egy nevet, és hivatkozik az adatforrásra és a célindexre:

{
    "name" : "hotels-mysql-idxr",
    "dataSourceName" : "hotels-mysql-ds",
    "targetIndexName" : "hotels-mysql-ix",
    "disabled": null,
    "schedule": null,
    "parameters": {
        "batchSize": null,
        "maxFailedItems": null,
        "maxFailedItemsPerBatch": null,
        "base64EncodeKeys": null,
        "configuration": { }
        },
    "fieldMappings" : [ ],
    "encryptionKey": null
}

Főbb pontok:

Indexelő állapotának ellenőrzése

Indexelő állapotának lekérése kérés küldése az indexelő végrehajtásának figyeléséhez:

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-08-01-preview
  Content-Type: application/json  
  api-key: [admin key]

A válasz tartalmazza az állapotot és a feldolgozott elemek számát. A következő példához hasonlóan kell kinéznie:

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2024-02-21T00:23:24.957Z",
        "endTime":"2024-02-21T00:36:47.752Z",
        "errors":[],
        "itemsProcessed":1599501,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    },
    "executionHistory":
    [
        {
            "status":"success",
            "errorMessage":null,
            "startTime":"2024-02-21T00:23:24.957Z",
            "endTime":"2024-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        ... earlier history items
    ]
}

A végrehajtási előzmények legfeljebb 50 legutóbbi végrehajtást tartalmaznak, amelyek fordított időrendi sorrendben vannak rendezve, hogy a legújabb végrehajtás legyen az első.

Új és módosított sorok indexelése

Miután egy indexelő kitöltött egy keresési indexet, érdemes lehet, hogy a későbbi indexelők növekményesen indexeljenek csak az adatbázis új és módosított sorait.

A növekményes indexelés engedélyezéséhez állítsa be a dataChangeDetectionPolicy tulajdonságot az adatforrás definíciójában. Ez a tulajdonság tájékoztatja az indexelőt, hogy melyik változáskövetési mechanizmust használja az adatokon.

Azure Database for MySQL indexelők esetében az egyetlen támogatott szabályzat a HighWaterMarkChangeDetectionPolicy.

Az indexelő változásészlelési szabályzata egy magas vízjelű oszlopra támaszkodik, amely rögzíti a sor verzióját, vagy a sor utolsó frissítésének dátumát és időpontját. Ez gyakran egy DATE, DATETIMEvagy TIMESTAMP oszlop olyan részletességgel, amely elegendő a magas vízjelű oszlop követelményeinek való megfeleléshez.

A MySQL-adatbázisban a magas vízjel oszlopnak meg kell felelnie az alábbi követelményeknek:

  • Minden adatbeszúrásnak meg kell adnia az oszlop értékét.
  • Az elem minden frissítése az oszlop értékét is módosítja.
  • Az oszlop értéke minden beszúrással vagy frissítéssel nő.
  • A következő WHERE és ORDER BY záradékokkal rendelkező lekérdezések hatékonyan végrehajthatók: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

Az alábbi példa egy változásészlelési szabályzattal rendelkező adatforrásdefiníciót mutat be:

{
    "name" : "[Data source name]",
    "type" : "mysql",
    "credentials" : { "connectionString" : "[connection string]" },
    "container" : { "name" : "[table or view name]" },
    "dataChangeDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName" : "[last_updated column name]"
    }
}

Fontos

Ha nézetet használ, magas vízjelszabályzatot kell beállítania az indexelő adatforrásában.

Ha a forrástábla nem rendelkezik indexel a magas vízjel oszlopban, a MySQL-indexelő által használt lekérdezések időtúllépést eredményezhetnek. A záradék megköveteli, hogy az ORDER BY [High Water Mark Column] index hatékonyan fusson, ha a tábla sok sort tartalmaz.

Törölt sorok indexelése

Ha sorokat töröl a táblázatból vagy a nézetből, általában ezeket a sorokat is törölni szeretné a keresési indexből. Ha azonban a sorok fizikailag törlődnek a táblából, az indexelőnek nincs módja arra, hogy a már nem létező rekordok jelenlétét következtethesse. A megoldás egy puha törlési technika használata sorok logikai törlésére anélkül, hogy eltávolítaná őket a táblából. Adjon hozzá egy oszlopot a táblához, vagy tekintse meg és jelölje meg a sorokat töröltként az adott oszlop használatával.

A törlési állapotot biztosító oszlop miatt az indexelő konfigurálható úgy, hogy eltávolítsa azokat a keresési dokumentumokat, amelyekre a törlési állapot be van állítva true. Az ezt a viselkedést támogató konfigurációs tulajdonság egy adattörlési észlelési szabályzat, amely az adatforrás definíciójában az alábbiak szerint van megadva:

{
    …,
    "dataDeletionDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName" : "[a column name]",
        "softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
    }
}

A softDeleteMarkerValue karakterláncnak kell lennie. Ha például van egy egész szám oszlopa, amelyben a törölt sorok 1 értékkel vannak megjelölve, használja a következőt "1": . Ha olyan oszlopa van BIT , amelyben a törölt sorok logikai igaz értékkel vannak megjelölve, használja a sztringkonstanst True vagy true (az eset nem számít).

Következő lépések

Most már futtathatja az indexelőt, figyelheti az állapotot vagy ütemezheti az indexelő végrehajtását. Az alábbi cikkek olyan indexelőkre vonatkoznak, amelyek tartalmat kérnek le Azure MySQL-ből: