Dari Elasticsearch
Panduan ini menyediakan proses langkah demi langkah yang komprehensif untuk memigrasikan data dari Elasticsearch ke Milvus 2.x. Dengan mengikuti panduan ini, Anda akan dapat mentransfer data secara efisien, memanfaatkan fitur-fitur canggih Milvus 2.x, dan meningkatkan kinerja.
Prasyarat
- Versi perangkat lunak:
- Sumber Elasticsearch: 7.x atau 8.x
- Target Milvus: 2.x
- Untuk detail instalasi, lihat Menginstalasi Elasticsearch dan Menginstalasi Milvus.
- Alat yang dibutuhkan:
- Alatmigrasi Milvus. Untuk detail instalasi, lihat Menginstal Alat Migrasi.
- Tipe data yang didukung untuk migrasi: Bidang-bidang yang akan dimigrasikan dari sumber indeks Elasticsearch adalah dari jenis berikut - dense_vector, kata kunci, teks, long, integer, double, float, boolean, objek. Tipe data yang tidak tercantum di sini saat ini tidak didukung untuk migrasi. Lihat Referensi pemetaan bidang untuk informasi rinci mengenai pemetaan data antara koleksi Milvus dan indeks Elasticsearch.
- Persyaratan indeks Elasticsearch:
- Indeks Elasticsearch sumber harus berisi ruas vektor dengan tipe
dense_vector. Migrasi tidak dapat dimulai tanpa bidang vektor.
- Indeks Elasticsearch sumber harus berisi ruas vektor dengan tipe
Mengkonfigurasi berkas migrasi
Simpan berkas konfigurasi migrasi contoh sebagai migration.yaml dan modifikasi konfigurasi berdasarkan kondisi Anda yang sebenarnya. Anda bebas meletakkan berkas konfigurasi di direktori lokal mana pun.
dumper: # configs for the migration job.
worker:
workMode: "elasticsearch" # operational mode of the migration job.
reader:
bufferSize: 2500 # buffer size to read from Elasticsearch in each batch. A value ranging from 2000 to 4000 is recommended.
meta: # meta configs for the source Elasticsearch index and target Milvus 2.x collection.
mode: "config" # specifies the source for meta configs. currently, onlly `config` is supported.
version: "8.9.1"
index: "qatest_index" # identifies the Elasticsearch index to migrate data from.
fields: # fields within the Elasticsearch index to be migrated.
- name: "my_vector" # name of the Elasticsearch field.
type: "dense_vector" # data type of the Elasticsearch field.
dims: 128 # dimension of the vector field. required only when `type` is `dense_vector`.
- name: "id"
pk: true # specifies if the field serves as a primary key.
type: "long"
- name: "num"
type: "integer"
- name: "double1"
type: "double"
- name: "text1"
maxLen: 1000 # max. length of data fields. required only for `keyword` and `text` data types.
type: "text"
- name: "bl1"
type: "boolean"
- name: "float1"
type: "float"
milvus: # configs specific to creating the collection in Milvus 2.x
collection: "Collection_01" # name of the Milvus collection. defaults to the Elasticsearch index name if not specified.
closeDynamicField: false # specifies whether to disable the dynamic field in the collection. defaults to `false`.
shardNum: 2 # number of shards to be created in the collection.
consistencyLevel: Strong # consistency level for Milvus collection.
source: # connection configs for the source Elasticsearch server
es:
urls:
- "http://10.15.1.***:9200" # address of the source Elasticsearch server.
username: "" # username for the Elasticsearch server.
password: "" # password for the Elasticsearch server.
target:
mode: "remote" # storage location for dumped files. valid values: `remote` and `local`.
remote: # configs for remote storage
outputDir: "migration/milvus/test" # output directory path in the cloud storage bucket.
cloud: "aws" # cloud storage service provider. Examples: `aws`, `gcp`, `azure`, etc.
region: "us-west-2" # region of the cloud storage; can be any value if using local Minio.
bucket: "zilliz-aws-us-****-*-********" # bucket name for storing data; must align with configs in milvus.yaml for Milvus 2.x.
useIAM: true # whether to use an IAM Role for connection.
checkBucket: false # checks if the specified bucket exists in the storage.
milvus2x: # connection configs for the target Milvus 2.x server
endpoint: "http://10.102.*.**:19530" # address of the target Milvus server.
username: "****" # username for the Milvus 2.x server.
password: "******" # password for the Milvus 2.x server.
Tabel berikut ini menjelaskan parameter dalam berkas konfigurasi contoh. Untuk daftar lengkap konfigurasi, lihat Migrasi Milvus: Elasticsearch ke Milvus 2.x.
dumperParameter Deskripsi dumper.worker.workModeMode operasional pekerjaan migrasi. Diatur ke elasticsearchketika melakukan migrasi dari indeks Elasticsearch.dumper.worker.reader.bufferSizeUkuran buffer untuk dibaca dari Elasticsearch di setiap batch. Unit: KB. metaParameter Deskripsi meta.modeMenentukan sumber untuk meta konfigurasi. Saat ini, hanya configyang didukung.meta.indexMengidentifikasi indeks Elasticsearch yang akan dimigrasikan datanya. meta.fieldsBidang dalam indeks Elasticsearch yang akan dimigrasi. meta.fields.nameNama bidang Elasticsearch. meta.fields.maxLenPanjang maksimum bidang. Parameter ini hanya diperlukan jika meta.fields.typeadalahkeywordatautext.meta.fields.pkMenentukan apakah bidang berfungsi sebagai kunci utama. meta.fields.typeTipe data bidang Elasticsearch. Saat ini, tipe data berikut di Elasticsearch didukung: dense_vector, kata kunci, teks, long, integer, double, float, boolean, objek. meta.fields.dimsDimensi bidang vektor. Parameter ini hanya diperlukan jika meta.fields.typeadalahdense_vector.meta.milvusKonfigurasi khusus untuk membuat koleksi di Milvus 2.x. meta.milvus.collectionNama koleksi Milvus. Defaultnya adalah nama indeks Elasticsearch jika tidak ditentukan. meta.milvus.closeDynamicFieldMenentukan apakah akan menonaktifkan bidang dinamis dalam koleksi. Defaultnya adalah false. Untuk informasi lebih lanjut tentang bidang dinamis, lihat Mengaktifkan Bidang Dinamis.meta.milvus.shardNumJumlah pecahan yang akan dibuat dalam koleksi. Untuk informasi lebih lanjut tentang pecahan, lihat Terminologi. meta.milvus.consistencyLevelTingkat konsistensi untuk koleksi di Milvus. Untuk informasi lebih lanjut, lihat Konsistensi. sourceParameter Deskripsi source.esKonfigurasi koneksi untuk server Elasticsearch sumber. source.es.urlsAlamat server Elasticsearch sumber. source.es.usernameNama pengguna untuk server Elasticsearch. source.es.passwordKata sandi untuk server Elasticsearch. targetParameter Deskripsi target.modeLokasi penyimpanan untuk file yang dibuang. Nilai yang valid:
-local: Menyimpan file yang dibuang di disk lokal.
-remote: Menyimpan file yang dibuang di penyimpanan objek.target.remote.outputDirJalur direktori keluaran di ember penyimpanan cloud. target.remote.cloudPenyedia layanan penyimpanan cloud. Nilai contoh: aws,gcp,azure.target.remote.regionWilayah penyimpanan cloud. Bisa berupa nilai apa pun jika Anda menggunakan MinIO lokal. target.remote.bucketNama bucket untuk menyimpan data. Nilainya harus sama dengan konfigurasi di Milvus 2.x. Untuk informasi lebih lanjut, lihat Konfigurasi Sistem. target.remote.useIAMApakah akan menggunakan Peran IAM untuk koneksi. target.remote.checkBucketApakah akan memeriksa apakah bucket yang ditentukan ada dalam penyimpanan objek. target.milvus2xKonfigurasi koneksi untuk server Milvus 2.x target. target.milvus2x.endpointAlamat server Milvus target. target.milvus2x.usernameNama pengguna untuk server Milvus 2.x. Parameter ini diperlukan jika autentikasi pengguna diaktifkan untuk server Milvus Anda. Untuk informasi lebih lanjut, lihat Mengaktifkan Autentikasi. target.milvus2x.passwordKata sandi untuk server Milvus 2.x. Parameter ini diperlukan jika autentikasi pengguna diaktifkan untuk server Milvus Anda. Untuk informasi lebih lanjut, lihat Mengaktifkan Autentikasi.
Memulai tugas migrasi
Mulai tugas migrasi dengan perintah berikut. Ganti {YourConfigFilePath} dengan direktori lokal tempat berkas konfigurasi migration.yaml berada.
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Berikut ini adalah contoh keluaran log migrasi yang berhasil:
[task/load_base_task.go:94] ["[LoadTasker] Dec Task Processing-------------->"] [Count=0] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304]
[task/load_base_task.go:76] ["[LoadTasker] Progress Task --------------->"] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304]
[dbclient/cus_field_milvus2x.go:86] ["[Milvus2x] begin to ShowCollectionRows"]
[loader/cus_milvus2x_loader.go:66] ["[Loader] Static: "] [collection=test_mul_field4_rename1] [beforeCount=50000] [afterCount=100000] [increase=50000]
[loader/cus_milvus2x_loader.go:66] ["[Loader] Static Total"] ["Total Collections"=1] [beforeTotalCount=50000] [afterTotalCount=100000] [totalIncrease=50000]
[migration/es_starter.go:25] ["[Starter] migration ES to Milvus finish!!!"] [Cost=80.009174459]
[starter/starter.go:106] ["[Starter] Migration Success!"] [Cost=80.00928425]
[cleaner/remote_cleaner.go:27] ["[Remote Cleaner] Begin to clean files"] [bucket=a-bucket] [rootPath=testfiles/output/zwh/migration]
[cmd/start.go:32] ["[Cleaner] clean file success!"]
Verifikasi hasilnya
Setelah tugas migrasi dijalankan, Anda dapat melakukan panggilan API atau menggunakan Attu untuk melihat jumlah entitas yang dimigrasi. Untuk informasi lebih lanjut, lihat Attu dan get_collection_stats().
Referensi pemetaan bidang
Tinjau tabel di bawah ini untuk memahami bagaimana tipe field di indeks Elasticsearch dipetakan ke tipe field di koleksi Milvus.
Untuk informasi lebih lanjut mengenai tipe data yang didukung di Milvus, lihat Tipe data yang didukung.
| Jenis Bidang Elasticsearch | Jenis Bidang Milvus | Deskripsi |
|---|---|---|
| dense_vector | Vektor mengambang | Dimensi vektor tetap tidak berubah selama migrasi. |
| kata kunci | VarChar | Tetapkan Panjang Maksimal (1 hingga 65.535). String yang melebihi batas dapat memicu kesalahan migrasi. |
| teks | VarChar | Tetapkan Panjang Maks (1 hingga 65.535). String yang melebihi batas dapat memicu kesalahan migrasi. |
| panjang | Int64 | - |
| bilangan bulat | Int32 | - |
| double | Double | - |
| mengambang | Mengapung | - |
| boolean | Bool | - |
| objek | JSON | - |