Da Elasticsearch
Questa guida fornisce un processo completo, passo dopo passo, per la migrazione dei dati da Elasticsearch a Milvus 2.x. Seguendo questa guida, sarete in grado di trasferire in modo efficiente i vostri dati, sfruttando le funzionalità avanzate di Milvus 2.x e le prestazioni migliorate.
Prerequisiti
- Versioni software:
- Fonte Elasticsearch: 7.x o 8.x
- Milvus di destinazione: 2.x
- Per i dettagli sull'installazione, fare riferimento a Installazione di Elasticsearch e Installazione di Milvus.
- Strumenti necessari:
- Strumento dimigrazione Milvus. Per i dettagli sull'installazione, fare riferimento a Installare lo strumento di migrazione.
- Tipi di dati supportati per la migrazione: I campi da migrare dall'indice Elasticsearch di origine sono dei seguenti tipi: dense_vector, keyword, text, long, integer, double, float, boolean, object. I tipi di dati non elencati non sono attualmente supportati per la migrazione. Per informazioni dettagliate sulle mappature dei dati tra le raccolte Milvus e gli indici Elasticsearch, consultare il riferimento alla mappatura dei campi.
- Requisiti dell'indice Elasticsearch:
- L'indice Elasticsearch di origine deve contenere un campo vettoriale del tipo
dense_vector
. La migrazione non può essere avviata senza un campo vettoriale.
- L'indice Elasticsearch di origine deve contenere un campo vettoriale del tipo
Configurare il file di migrazione
Salvate il file di configurazione della migrazione di esempio come migration.yaml
e modificate le configurazioni in base alle vostre condizioni reali. Il file di configurazione può essere collocato in qualsiasi directory locale.
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.
La tabella seguente descrive i parametri del file di configurazione di esempio. Per un elenco completo delle configurazioni, consultare Milvus Migration: Elasticsearch a Milvus 2.x.
dumper
Parametro Descrizione dumper.worker.workMode
Modalità operativa del lavoro di migrazione. Impostare elasticsearch
quando si migra da indici Elasticsearch.dumper.worker.reader.bufferSize
Dimensione del buffer da leggere da Elasticsearch in ogni batch. Unità: KB. meta
Parametro Descrizione meta.mode
Specifica l'origine delle metaconfigurazioni. Attualmente è supportato solo config
.meta.index
Identifica l'indice Elasticsearch da cui migrare i dati. meta.fields
Campi dell'indice Elasticsearch da migrare. meta.fields.name
Nome del campo Elasticsearch. meta.fields.maxLen
Lunghezza massima del campo. Questo parametro è richiesto solo quando meta.fields.type
èkeyword
otext
.meta.fields.pk
Specifica se il campo funge da chiave primaria. meta.fields.type
Tipo di dati del campo Elasticsearch. Attualmente sono supportati i seguenti tipi di dati in Elasticsearch: dense_vector, keyword, text, long, integer, double, float, boolean, object. meta.fields.dims
Dimensione del campo vettoriale. Questo parametro è richiesto solo quando meta.fields.type
èdense_vector
.meta.milvus
Configurazioni specifiche per la creazione della collezione in Milvus 2.x. meta.milvus.collection
Nome della collezione Milvus. Se non viene specificato, il nome è quello dell'indice Elasticsearch. meta.milvus.closeDynamicField
Specifica se disabilitare il campo dinamico nella raccolta. L'impostazione predefinita è false
. Per ulteriori informazioni sui campi dinamici, consultare Abilita campo dinamico.meta.milvus.shardNum
Numero di shard da creare nella raccolta. Per ulteriori informazioni sui frammenti, consultare Terminologia. meta.milvus.consistencyLevel
Livello di consistenza della collezione in Milvus. Per ulteriori informazioni, consultare Consistenza. source
Parametro Descrizione source.es
Configurazioni di connessione per il server Elasticsearch di origine. source.es.urls
Indirizzo del server Elasticsearch di origine. source.es.username
Nome utente del server Elasticsearch. source.es.password
Password del server Elasticsearch. target
Parametro Descrizione target.mode
Posizione di archiviazione dei file di dump. Valori validi:
-local
: archiviazione dei file di dump su dischi locali.
-remote
: archiviazione dei file di dump su object storage.target.remote.outputDir
Percorso della directory di output nel bucket del cloud storage. target.remote.cloud
Fornitore del servizio di cloud storage. Valori di esempio: aws
,gcp
,azure
.target.remote.region
Regione di archiviazione cloud. Può essere un valore qualsiasi se si usa MinIO locale. target.remote.bucket
Nome del bucket per la memorizzazione dei dati. Il valore deve essere lo stesso della configurazione in Milvus 2.x. Per ulteriori informazioni, consultare Configurazioni di sistema. target.remote.useIAM
Se utilizzare un ruolo IAM per la connessione. target.remote.checkBucket
Controllare se il bucket specificato esiste nell'archivio oggetti. target.milvus2x
Configurazioni di connessione per il server Milvus 2.x di destinazione. target.milvus2x.endpoint
Indirizzo del server Milvus di destinazione. target.milvus2x.username
Nome utente per il server Milvus 2.x. Questo parametro è necessario se l'autenticazione dell'utente è abilitata per il server Milvus. Per ulteriori informazioni, consultare Abilita l'autenticazione. target.milvus2x.password
Password per il server Milvus 2.x. Questo parametro è necessario se l'autenticazione dell'utente è abilitata per il vostro server Milvus. Per ulteriori informazioni, consultare Abilita autenticazione.
Avviare l'attività di migrazione
Avviare l'attività di migrazione con il seguente comando. Sostituire {YourConfigFilePath}
con la directory locale in cui risiede il file di configurazione migration.yaml
.
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Di seguito è riportato un esempio di output del log di migrazione andato a buon fine:
[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!"]
Verifica del risultato
Una volta eseguita l'attività di migrazione, è possibile effettuare chiamate API o utilizzare Attu per visualizzare il numero di entità migrate. Per ulteriori informazioni, consultare Attu e get_collection_stats().
Riferimento alla mappatura dei campi
La tabella seguente permette di capire come i tipi di campo degli indici Elasticsearch sono mappati ai tipi di campo delle collezioni Milvus.
Per ulteriori informazioni sui tipi di dati supportati in Milvus, consultare Tipi di dati supportati.
Tipo di campo Elasticsearch | Tipo di campo Milvus | Descrizione |
---|---|---|
vettore_denso | Vettore fluttuante | Le dimensioni del vettore rimangono invariate durante la migrazione. |
parola chiave | VarChar | Imposta la lunghezza massima (da 1 a 65.535). Le stringhe che superano questo limite possono causare errori di migrazione. |
testo | VarChar | Impostare la lunghezza massima (da 1 a 65.535). Le stringhe che superano il limite possono causare errori di migrazione. |
lungo | Int64 | - |
intero | Int32 | - |
doppio | doppio | - |
galleggiante | Galleggiante | - |
booleano | booleano | - |
oggetto | JSON | - |