Mengindeks data dari server fleksibel Azure Database for MySQL
Penting
Kemampuan ini berada di pratinjau publik di bawah ketentuan penggunaan tambahan. Anda dapat menggunakan pratinjau 2020-06-30 atau yang lebih baru untuk mengindeks konten Anda. Kami merekomendasikan API pratinjau terbaru. Saat ini tidak ada dukungan portal.
Dalam artikel ini, pelajari cara mengonfigurasi pengindeks yang mengimpor konten dari Azure Database for MySQL dan membuatnya dapat dicari di Azure AI Search. Input ke pengindeks adalah baris Anda, dalam satu tabel atau tampilan. Output adalah indeks pencarian dengan konten yang dapat dicari di bidang individual.
Artikel ini melengkapi Buat pengindeks dengan informasi khusus untuk pengindeksan dari server fleksibel Azure Database for MySQL. Ini menggunakan REST API untuk menunjukkan alur kerja tiga bagian yang umum untuk semua pengindeks: membuat sumber data, membuat indeks, membuat pengindeks. Ekstraksi data terjadi saat Anda mengirimkan permintaan Buat Pengindeks.
Saat dikonfigurasi untuk menyertakan tanda air tinggi dan penghapusan sementara, pengindeks mengambil semua perubahan, unggahan, dan penghapusan untuk database MySQL Anda. Ini mencerminkan perubahan ini dalam indeks pencarian Anda. Ekstraksi data terjadi saat Anda mengirimkan permintaan Buat Pengindeks.
Prasyarat
Daftarkan pratinjau untuk memberikan umpan balik skenario. Anda dapat mengakses fitur secara otomatis setelah pengiriman formulir.
Server fleksibel Azure Database for MySQL dan data sampel. Data harus berada dalam tabel atau tampilan. Kunci primer diperlukan. Jika Anda menggunakan tampilan, tampilan tersebut harus memiliki kolom tanda air tinggi.
Izin baca. Akses penuh string koneksi menyertakan kunci yang memberikan akses ke konten, tetapi jika Anda menggunakan peran Azure, pastikan identitas terkelola layanan pencarian memiliki izin Pembaca di MySQL.
Klien REST untuk membuat sumber data, indeks, dan pengindeks.
Anda juga dapat menggunakan Azure SDK untuk .NET. Anda tidak dapat menggunakan portal untuk pembuatan pengindeks, tetapi Anda dapat mengelola pengindeks dan sumber data setelah dibuat.
Batasan pratinjau
Saat ini, pelacakan perubahan dan deteksi penghapusan tidak berfungsi jika tanggal atau tanda waktu seragam untuk semua baris. Batasan ini adalah masalah yang diketahui untuk ditangani dalam pembaruan ke pratinjau. Hingga masalah ini diatasi, jangan tambahkan set keterampilan ke pengindeks MySQL.
Pratinjau tidak mendukung jenis geometri dan blob.
Seperti yang disebutkan, tidak ada dukungan portal untuk pembuatan pengindeks, tetapi pengindeks MySQL dan sumber data dapat dikelola di portal setelah ada. Misalnya, Anda dapat mengedit definisi, dan mengatur ulang, menjalankan, atau menjadwalkan pengindeks.
Menentukan sumber data
Definisi sumber data menentukan data untuk mengindeks, kredensial, dan kebijakan untuk mengidentifikasi perubahan dalam data. Sumber data didefinisikan sebagai sumber daya yang independen, sehingga dapat digunakan oleh beberapa pengindeks.
Buat atau Perbarui Sumber Data menentukan definisi. Pastikan untuk menggunakan PRATINJAU REST API saat membuat sumber data.
{
"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]"
}
}
Poin utama:
Atur
type
ke"mysql"
(diperlukan).Atur
credentials
ke ADO.NET string koneksi. Anda dapat menemukan string koneksi di portal Azure, pada halaman String koneksi untuk MySQL.Atur
container
ke nama tabel.Atur
dataChangeDetectionPolicy
apakah data volatil dan Anda ingin pengindeks hanya mengambil item baru dan yang diperbarui pada eksekusi berikutnya.Atur
dataDeletionDetectionPolicy
jika Anda ingin menghapus dokumen pencarian dari indeks pencarian saat item sumber dihapus.
Buat indeks
Buat atau Perbarui Indeks menentukan skema indeks:
{
"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 }
]
}
Jika kunci utama dalam tabel sumber cocok dengan kunci dokumen (dalam hal ini, "ID"), pengindeks mengimpor kunci utama sebagai kunci dokumen.
Jenis data pemetaan
Tabel berikut memetakan database MySQL ke setara Azure AI Search. Untuk informasi selengkapnya, lihat Jenis data yang didukung (Pencarian Azure AI).
Catatan
Pratinjau tidak mendukung jenis geometri dan blob.
Jenis data MySQL | Jenis bidang Pencarian Azure AI |
---|---|
bool , boolean |
Edm.Boolean, Edm.String |
tinyint , , smallint mediumint , int , , integer ,year |
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 , , tinytext varchar , mediumtext , text , longtext , enum , , set ,time |
Edm.String |
unsigned numerical data, serial, decimal, dec, bit, blob, binary, geometry | T/A |
Mengonfigurasi dan menjalankan pengindeks MySQL
Setelah indeks dan sumber data dibuat, Anda siap untuk membuat pengindeks. Konfigurasi pengindeks menentukan input, parameter, dan properti yang mengontrol perilaku run time.
Buat atau perbarui pengindeks dengan memberinya nama dan mereferensikan sumber data dan indeks target:
{
"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
}
Poin utama:
Tentukan pemetaan bidang jika ada perbedaan dalam nama atau jenis bidang, atau jika Anda memerlukan beberapa versi bidang sumber dalam indeks pencarian.
Pengindeks berjalan secara otomatis saat dibuat. Anda dapat mencegahnya berjalan dengan mengatur
disabled
ketrue
. Untuk mengontrol eksekusi pengindeks, jalankan pengindeks sesuai permintaan atau letakkan sesuai jadwal.
Periksa status pengindeks
Kirim permintaan Dapatkan Status Pengindeks untuk memantau eksekusi pengindeks:
GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [admin key]
Respons mencakup status dan jumlah item yang diproses. Ini akan terlihat mirip dengan contoh berikut:
{
"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
]
}
Riwayat eksekusi berisi hingga 50 eksekusi yang terakhir selesai, yang diurutkan dalam urutan kronologis terbalik sehingga eksekusi terbaru menjadi yang pertama.
Mengindeks baris baru dan yang diubah
Setelah pengindeks mengisi indeks pencarian sepenuhnya, Anda mungkin ingin pengindeks berikutnya berjalan untuk mengindeks secara bertahap hanya baris baru dan yang diubah dalam database Anda.
Untuk mengaktifkan pengindeksan bertahap, atur dataChangeDetectionPolicy
properti dalam definisi sumber data Anda. Properti ini memberi tahu pengindeks mekanisme pelacakan perubahan mana yang digunakan pada data Anda.
Untuk pengindeks Azure Database for MySQL, satu-satunya kebijakan yang HighWaterMarkChangeDetectionPolicy
didukung adalah .
Kebijakan deteksi perubahan pengindeks bergantung pada memiliki kolom tanda air tinggi yang menangkap versi baris, atau tanggal dan waktu saat baris terakhir diperbarui. Sering kali DATE
kolom , DATETIME
, atau TIMESTAMP
pada granularitas yang cukup untuk memenuhi persyaratan kolom tanda air tinggi.
Di database MySQL Anda, kolom tanda air tinggi harus memenuhi persyaratan berikut:
- Semua sisipan data harus menentukan nilai untuk kolom tersebut.
- Semua pembaruan pada item juga mengubah nilai kolom.
- Nilai kolom ini meningkat seiring masing-masing sisipan atau pembaruan.
- Kueri dengan klausa dan
ORDER BY
berikutWHERE
dapat dijalankan secara efisien:WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]
Contoh berikut menunjukkan definisi sumber data dengan kebijakan deteksi perubahan:
{
"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]"
}
}
Penting
Jika Anda menggunakan tampilan, Anda harus menetapkan kebijakan tanda air tinggi di sumber data pengindeks Anda.
Jika tabel sumber tidak memiliki indeks pada kolom tanda air tinggi, kueri yang digunakan oleh pengindeks MySQL mungkin kehabisan waktu. Secara khusus, ORDER BY [High Water Mark Column]
klausa mengharuskan indeks berjalan secara efisien ketika tabel berisi banyak baris.
Mengindeks baris yang dihapus
Saat baris dihapus dari tabel atau tampilan, Anda biasanya ingin menghapus baris tersebut dari indeks pencarian juga. Namun, jika baris dihapus secara fisik dari tabel, pengindeks tidak memiliki cara untuk menyimpulkan adanya rekaman yang tidak ada lagi. Solusinya adalah menggunakan teknik penghapusan sementara untuk menghapus baris secara logis tanpa menghapusnya dari tabel. Tambahkan kolom ke tabel Anda atau tampilkan dan tandai baris sebagai dihapus menggunakan kolom tersebut.
Mengingat kolom yang menyediakan status penghapusan, pengindeks dapat dikonfigurasi untuk menghapus dokumen pencarian yang status penghapusannya diatur ke true
. Properti konfigurasi yang mendukung perilaku ini adalah kebijakan deteksi penghapusan data, yang ditentukan dalam definisi sumber data sebagai berikut:
{
…,
"dataDeletionDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "[a column name]",
"softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
}
}
softDeleteMarkerValue
harus berupa string. Contohnya, jika Anda memiliki kolom bilangan bulat di mana baris yang dihapus ditandai dengan nilai 1, gunakan "1"
. Jika Anda memiliki BIT
kolom di mana baris yang dihapus ditandai dengan nilai benar Boolean, gunakan string literal True
atau true
(huruf besar/kecil tidak masalah).
Langkah berikutnya
Anda sekarang dapat menjalankan pengindeks, status pemantauan, atau menjadwalkan eksekusi pengindeks. Artikel berikut ini berlaku untuk pengindeks yang menarik konten dari Azure MySQL: