Indexování dat z Azure Database for MySQL – Flexible Server (verze Preview)

Poznámka

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Důležité

Na funkce, možnosti nebo vlastnosti označené jako (Preview) se nevztahuje smlouva o úrovni služeb, nejsou doporučené pro produkční úlohy a mohou se změnit nebo být omezeny dříve, než budou obecně k dispozici. Podmínky Azure AI Vyhledávač Preview platí pro všechny funkce ve verzi Preview, ať už jsou samostatné nebo součástí obecně dostupné funkce.

Důležité

Tyto funkce podporují připojení k jiným služby Microsoft a službám třetích stran. Použití těchto služeb podléhá vlastním podmínkám jednotlivých služeb a může vést ke zpracování nebo ukládání dat mimo hranici souladu Azure, stejně jako k toku dat do hranice souladu Azure.

Je vaší zodpovědností spravovat, jestli budou vaše data přetékat mimo dodržování předpisů a geografické hranice vaší organizace a případné související důsledky a že se zřídí příslušná oprávnění, hranice a schválení.

Zodpovídáte za pečlivou kontrolu a testování aplikací, které vytváříte v kontextu konkrétních případů použití, a za veškerá vhodná rozhodnutí a přizpůsobení. To zahrnuje implementaci vlastního zodpovědného zmírnění rizik umělé inteligence, jako jsou metaprompty, filtry obsahu nebo jiné bezpečnostní systémy, a zajištění toho, aby vaše aplikace splňovaly příslušné standardy kvality, spolehlivosti, zabezpečení a důvěryhodnosti. Další informace najdete v informacích o transparentnosti Azure AI Vyhledávač.

Indexer Azure Database for MySQL (Preview) importuje obsah z flexibilního serveru Azure Database for MySQL do indexu Azure AI Vyhledávač. Vstupy indexeru jsou řádky z jedné tabulky nebo zobrazení. Výstup je index vyhledávání s prohledávatelným obsahem v jednotlivých polích.

Tento článek doplňuje Vytvoření indexeru s informacemi specifickými pro indexování z flexibilního serveru Azure Database for MySQL. Pomocí rozhraní REST API demonstruje třídílný pracovní postup společný pro všechny indexery: vytvoření zdroje dat, vytvoření indexeru a vytvoření indexeru. Extrakce dat nastane, když odešlete požadavek Create Indexer.

Když je nakonfigurované tak, aby zahrnovaly vysokou mez a obnovitelné odstranění, indexer provede všechny změny, nahraje a odstraní vaši databázi MySQL. Tyto změny se projeví v indexu vyhledávání. Extrakce dat nastane, když odešlete požadavek Create Indexer.

Požadavky

  • Vyplňte registrační formulář indexeru ve verzi Preview. Registrace se automaticky schválí.

  • flexibilní server Azure Database for MySQL a ukázková data. Data se musí nacházet v tabulce nebo zobrazení. Je vyžadován primární klíč. Pokud používáte zobrazení, musí mít sloupec horní meze.

  • Oprávnění ke čtení Připojovací řetězec pro úplný přístup obsahuje klíč, který uděluje přístup k obsahu, ale pokud používáte role Azure, ujistěte se, že spravovaná identita vyhledávací služby má oprávnění Reader pro MySQL.

  • Klient REST pro vytvoření zdroje dat, indexu a indexeru.

    Můžete také použít Azure SDK pro .NET. K vytvoření indexeru nemůžete použít portál Azure, ale po vytvoření můžete spravovat indexery a zdroje dat.

Omezení verze Preview

Sledování změn a detekce odstranění v současné době nefungují, pokud je datum nebo časové razítko stejné pro všechny řádky. Toto omezení je známý problém, který je potřeba vyřešit v aktualizaci verze Preview. Dokud se tento problém nevyřeší, nepřidávejte do indexeru MySQL sadu dovedností.

Náhled nepodporuje typy geometrie a bloby.

Jak je uvedeno, neexistuje podpora vytváření indexeru portálu, ale indexer MySQL a zdroj dat je možné spravovat na portálu Azure jakmile existují. Můžete například upravit definice a resetovat, spustit nebo naplánovat indexer.

Definování zdroje dat

Definice zdroje dat určuje data, která se mají indexovat, přihlašovací údaje a zásady pro identifikaci změn v datech. Zdroj dat je definován jako nezávislý prostředek, aby ho mohl používat více indexerů.

Vytvoření nebo aktualizace zdroje dat určuje definici. Při vytváření zdroje dat nezapomeňte použít rozhraní REST API ve verzi Preview.

{   
    "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]"
    }
}

Klíčové body:

  • Nastaveno type na "mysql" (povinné).

  • Nastavte credentials na ADO.NET připojovací řetězec. Připojovací řetězce najdete na portálu Azure na stránce Connection pro MySQL.

  • Nastavte container na název tabulky.

  • Nastavte dataChangeDetectionPolicy , jestli jsou data nestálá a chcete, aby indexer zvedá pouze nové a aktualizované položky v následných spuštěních.

  • Nastavte dataDeletionDetectionPolicy , pokud chcete odebrat vyhledávací dokumenty z indexu vyhledávání při odstranění zdrojové položky.

Poznámka

U vlastnosti názvu kontejneru je hodnota omezena pouze na povolení písmen, číslic, podtržítka (_), tečk (.), jednoduchých pomlček (-) a hranatých závorek ([]).

Vytvoření indexu

Vytvoření nebo aktualizace indexu určuje schéma indexu:

{
    "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  }     
    ]
}

Pokud primární klíč ve zdrojové tabulce odpovídá klíči dokumentu (v tomto případě "ID"), indexer naimportuje primární klíč jako klíč dokumentu.

Mapování datových typů

Následující tabulka mapuje databázi MySQL na ekvivalenty služby Azure AI Vyhledávač. Další informace najdete v tématu Podporované datové typy (Azure AI Vyhledávač).

Poznámka

Náhled nepodporuje typy geometrie a bloby.

Datové typy MySQL typy polí Azure AI Vyhledávač
bool, boolean Edm.Boolean, Edm.String
tinyint, smallint, mediumint, int, , integeryear Edm.Int32, Edm.Int64, Edm.String
bigint Edm.Int64, Edm.String
float, double, real Edm.Double, Edm.String
date, datetime, timestamp Edm.DateTimeOffset, Edm.String
char, varchar, mediumtext, longtext, enum, tinytext, text, set, time Edm.String
bez znaménka numerická data, sériový, desetinný, dec, bit, blob, binární, geometrie N/A

Konfigurace a spuštění indexeru MySQL

Po vytvoření indexu a zdroje dat můžete indexer vytvořit. Konfigurace indexeru určuje vstupy, parametry a vlastnosti, které řídí chování doby běhu.

Vytvořte nebo aktualizujte indexer tak, že ho pojmenujte a odkazujete na zdroj dat a cílový index:

{
    "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
}

Klíčové body:

Kontrola stavu indexeru

Odeslání žádosti o získání stavu indexeru pro monitorování provádění indexeru:

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

Odpověď zahrnuje stav a počet zpracovaných položek. Měl by vypadat podobně jako v následujícím příkladu:

{
    "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
    ]
}

Historie provádění obsahuje až 50 naposledy dokončených spuštění, které jsou seřazeny v obráceném chronologickém pořadí tak, aby poslední spuštění bylo první.

Indexování nových a změněných řádků

Jakmile indexer plně naplní vyhledávací index, můžete chtít, aby další spuštění indexeru inkrementálně indexovalo pouze nové a změněné řádky v databázi.

Pokud chcete povolit přírůstkové indexování, nastavte dataChangeDetectionPolicy vlastnost v definici zdroje dat. Tato vlastnost říká indexeru, který mechanismus sledování změn se používá u vašich dat.

U indexerů Azure Database for MySQL je jedinou podporovanou zásadou HighWaterMarkChangeDetectionPolicy.

Zásady detekce změn indexeru spoléhají na to, že má indikátor úrovně změn, který zachycuje verzi řádku nebo datum a čas poslední aktualizace řádku. Často se jedná o sloupec DATE, DATETIME nebo TIMESTAMP s dostatečnou jemností pro splnění požadavků na sloupec s vysokou značkou.

Ve vaší databázi MySQL musí sloupec pro úroveň maximální hladiny splňovat následující požadavky:

  • Všechna vložení dat musí určovat hodnotu sloupce.
  • Všechny aktualizace položky také změní hodnotu sloupce.
  • Hodnota tohoto sloupce se zvyšuje při každém vložení nebo aktualizaci.
  • Dotazy s následujícími WHERE klauzulemi a ORDER BY klauzulemi je možné efektivně spouštět: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

Následující příklad ukazuje definici zdroje dat se zásadami detekce změn:

{
    "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]"
    }
}

Důležité

Pokud používáte zobrazení, musíte ve zdroji dat indexeru nastavit politiku nejvyšší úrovně.

Pokud zdrojová tabulka nemá index ve sloupci s vysokou hladinou, může dojít k vypršení časového limitu dotazů používaných indexerem MySQL. Zejména klauzule ORDER BY [High Water Mark Column] vyžaduje index pro efektivní spuštění, pokud tabulka obsahuje mnoho řádků.

Indexování odstraněných řádků

Když se řádky odstraní z tabulky nebo zobrazení, obvykle je chcete odstranit také z indexu vyhledávání. Pokud jsou však řádky fyzicky odebrány z tabulky, indexer nemá žádný způsob, jak odvodit přítomnost záznamů, které již neexistují. Řešením je použít metodu obnovitelného odstranění k logickému odstranění řádků bez jejich odebrání z tabulky. Přidejte sloupec do tabulky nebo zobrazení a označte řádky jako odstraněné pomocí tohoto sloupce.

Je-li k dispozici sloupec, který určuje stav odstranění, lze indexer nakonfigurovat tak, aby odstranil všechny vyhledávací dokumenty se stavem odstranění nastaveným na true. Vlastnost konfigurace, která toto chování podporuje, je zásada detekce odstranění dat, která je zadaná v definici zdroje dat následujícím způsobem:

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

Musí to být řetězec softDeleteMarkerValue. Pokud máte například celočíselnou hodnotu, ve které jsou odstraněné řádky označené hodnotou 1, použijte "1". Pokud máte BIT sloupec, ve kterém jsou odstraněné řádky označené logickou hodnotou true, použijte řetězcový literál True nebo true (případ nezáleží).

Další kroky

Teď můžete spustit indexer, monitorovat stav nebo naplánovat spuštění indexeru. Následující články platí pro indexery, které načítá obsah z Azure MySQL: