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.
dumper
Parameter Deskripsi dumper.worker.workMode
Mode operasional pekerjaan migrasi. Diatur ke elasticsearch
ketika melakukan migrasi dari indeks Elasticsearch.dumper.worker.reader.bufferSize
Ukuran buffer untuk dibaca dari Elasticsearch di setiap batch. Unit: KB. meta
Parameter Deskripsi meta.mode
Menentukan sumber untuk meta konfigurasi. Saat ini, hanya config
yang didukung.meta.index
Mengidentifikasi indeks Elasticsearch yang akan dimigrasikan datanya. meta.fields
Bidang dalam indeks Elasticsearch yang akan dimigrasi. meta.fields.name
Nama bidang Elasticsearch. meta.fields.maxLen
Panjang maksimum bidang. Parameter ini hanya diperlukan jika meta.fields.type
adalahkeyword
atautext
.meta.fields.pk
Menentukan apakah bidang berfungsi sebagai kunci utama. meta.fields.type
Tipe data bidang Elasticsearch. Saat ini, tipe data berikut di Elasticsearch didukung: dense_vector, kata kunci, teks, long, integer, double, float, boolean, objek. meta.fields.dims
Dimensi bidang vektor. Parameter ini hanya diperlukan jika meta.fields.type
adalahdense_vector
.meta.milvus
Konfigurasi khusus untuk membuat koleksi di Milvus 2.x. meta.milvus.collection
Nama koleksi Milvus. Defaultnya adalah nama indeks Elasticsearch jika tidak ditentukan. meta.milvus.closeDynamicField
Menentukan apakah akan menonaktifkan bidang dinamis dalam koleksi. Defaultnya adalah false
. Untuk informasi lebih lanjut tentang bidang dinamis, lihat Mengaktifkan Bidang Dinamis.meta.milvus.shardNum
Jumlah pecahan yang akan dibuat dalam koleksi. Untuk informasi lebih lanjut tentang pecahan, lihat Terminologi. meta.milvus.consistencyLevel
Tingkat konsistensi untuk koleksi di Milvus. Untuk informasi lebih lanjut, lihat Konsistensi. source
Parameter Deskripsi source.es
Konfigurasi koneksi untuk server Elasticsearch sumber. source.es.urls
Alamat server Elasticsearch sumber. source.es.username
Nama pengguna untuk server Elasticsearch. source.es.password
Kata sandi untuk server Elasticsearch. target
Parameter Deskripsi target.mode
Lokasi 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.outputDir
Jalur direktori keluaran di ember penyimpanan cloud. target.remote.cloud
Penyedia layanan penyimpanan cloud. Nilai contoh: aws
,gcp
,azure
.target.remote.region
Wilayah penyimpanan cloud. Bisa berupa nilai apa pun jika Anda menggunakan MinIO lokal. target.remote.bucket
Nama bucket untuk menyimpan data. Nilainya harus sama dengan konfigurasi di Milvus 2.x. Untuk informasi lebih lanjut, lihat Konfigurasi Sistem. target.remote.useIAM
Apakah akan menggunakan Peran IAM untuk koneksi. target.remote.checkBucket
Apakah akan memeriksa apakah bucket yang ditentukan ada dalam penyimpanan objek. target.milvus2x
Konfigurasi koneksi untuk server Milvus 2.x target. target.milvus2x.endpoint
Alamat server Milvus target. target.milvus2x.username
Nama 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.password
Kata 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 | - |