milvus-logo
LFAI
Casa
  • Migrazione di Milvus

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

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

    ParametroDescrizione
    dumper.worker.workModeModalità operativa del lavoro di migrazione. Impostare elasticsearch quando si migra da indici Elasticsearch.
    dumper.worker.reader.bufferSizeDimensione del buffer da leggere da Elasticsearch in ogni batch. Unità: KB.
  • meta

    ParametroDescrizione
    meta.modeSpecifica l'origine delle metaconfigurazioni. Attualmente è supportato solo config.
    meta.indexIdentifica l'indice Elasticsearch da cui migrare i dati.
    meta.fieldsCampi dell'indice Elasticsearch da migrare.
    meta.fields.nameNome del campo Elasticsearch.
    meta.fields.maxLenLunghezza massima del campo. Questo parametro è richiesto solo quando meta.fields.type è keyword o text.
    meta.fields.pkSpecifica se il campo funge da chiave primaria.
    meta.fields.typeTipo 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.dimsDimensione del campo vettoriale. Questo parametro è richiesto solo quando meta.fields.type è dense_vector.
    meta.milvusConfigurazioni specifiche per la creazione della collezione in Milvus 2.x.
    meta.milvus.collectionNome della collezione Milvus. Se non viene specificato, il nome è quello dell'indice Elasticsearch.
    meta.milvus.closeDynamicFieldSpecifica se disabilitare il campo dinamico nella raccolta. L'impostazione predefinita è false. Per ulteriori informazioni sui campi dinamici, consultare Abilita campo dinamico.
    meta.milvus.shardNumNumero di shard da creare nella raccolta. Per ulteriori informazioni sui frammenti, consultare Terminologia.
    meta.milvus.consistencyLevelLivello di consistenza della collezione in Milvus. Per ulteriori informazioni, consultare Consistenza.
  • source

    ParametroDescrizione
    source.esConfigurazioni di connessione per il server Elasticsearch di origine.
    source.es.urlsIndirizzo del server Elasticsearch di origine.
    source.es.usernameNome utente del server Elasticsearch.
    source.es.passwordPassword del server Elasticsearch.
  • target

    ParametroDescrizione
    target.modePosizione 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.outputDirPercorso della directory di output nel bucket del cloud storage.
    target.remote.cloudFornitore del servizio di cloud storage. Valori di esempio: aws, gcp, azure.
    target.remote.regionRegione di archiviazione cloud. Può essere un valore qualsiasi se si usa MinIO locale.
    target.remote.bucketNome 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.useIAMSe utilizzare un ruolo IAM per la connessione.
    target.remote.checkBucketControllare se il bucket specificato esiste nell'archivio oggetti.
    target.milvus2xConfigurazioni di connessione per il server Milvus 2.x di destinazione.
    target.milvus2x.endpointIndirizzo del server Milvus di destinazione.
    target.milvus2x.usernameNome 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.passwordPassword 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 ElasticsearchTipo di campo MilvusDescrizione
vettore_densoVettore fluttuanteLe dimensioni del vettore rimangono invariate durante la migrazione.
parola chiaveVarCharImposta la lunghezza massima (da 1 a 65.535). Le stringhe che superano questo limite possono causare errori di migrazione.
testoVarCharImpostare la lunghezza massima (da 1 a 65.535). Le stringhe che superano il limite possono causare errori di migrazione.
lungoInt64-
interoInt32-
doppiodoppio-
galleggianteGalleggiante-
booleanobooleano-
oggettoJSON-

Tradotto daDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Questa pagina è stata utile?