milvus-logo
LFAI
Home
  • Milvus-Migration

Von Elasticsearch

Dieser Leitfaden bietet einen umfassenden, schrittweisen Prozess für die Migration von Daten von Elasticsearch nach Milvus 2.x. Wenn Sie diesen Leitfaden befolgen, können Sie Ihre Daten effizient übertragen und dabei die erweiterten Funktionen und die verbesserte Leistung von Milvus 2.x nutzen.

Voraussetzungen

Konfigurieren Sie die Migrationsdatei

Speichern Sie die Beispiel-Migrationskonfigurationsdatei unter migration.yaml und ändern Sie die Konfigurationen auf der Grundlage Ihrer tatsächlichen Bedingungen. Es steht Ihnen frei, die Konfigurationsdatei in einem beliebigen lokalen Verzeichnis abzulegen.

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.

In der folgenden Tabelle werden die Parameter in der Beispielkonfigurationsdatei beschrieben. Eine vollständige Liste der Konfigurationen finden Sie in Milvus Migration: Elasticsearch zu Milvus 2.x.

  • dumper

    ParameterBeschreibung
    dumper.worker.workModeDer Betriebsmodus des Migrationsauftrags. Bei der Migration von Elasticsearch-Indizes auf elasticsearch setzen.
    dumper.worker.reader.bufferSizePuffergröße, die in jedem Batch aus Elasticsearch gelesen wird. Einheit: KB.
  • meta

    ParameterBeschreibung
    meta.modeGibt die Quelle für Meta-Konfigurationen an. Derzeit wird nur config unterstützt.
    meta.indexIdentifiziert den Elasticsearch-Index, aus dem Daten migriert werden sollen.
    meta.fieldsFelder innerhalb des zu migrierenden Elasticsearch-Index.
    meta.fields.nameName des Elasticsearch-Feldes.
    meta.fields.maxLenMaximale Länge des Feldes. Dieser Parameter ist nur erforderlich, wenn meta.fields.type keyword oder text ist.
    meta.fields.pkGibt an, ob das Feld als Primärschlüssel dient.
    meta.fields.typeDatentyp des Elasticsearch-Feldes. Derzeit werden die folgenden Datentypen in Elasticsearch unterstützt: dense_vector, keyword, text, long, integer, double, float, boolean, object.
    meta.fields.dimsDimension des Vektorfeldes. Dieser Parameter ist nur erforderlich, wenn meta.fields.type dense_vector ist.
    meta.milvusSpezielle Konfigurationen für die Erstellung der Sammlung in Milvus 2.x.
    meta.milvus.collectionName der Milvus-Sammlung. Der Standardwert ist der Elasticsearch-Indexname, wenn er nicht angegeben wird.
    meta.milvus.closeDynamicFieldGibt an, ob das dynamische Feld in der Sammlung deaktiviert werden soll. Die Voreinstellung ist false. Weitere Informationen zu dynamischen Feldern finden Sie unter Dynamisches Feld aktivieren.
    meta.milvus.shardNumAnzahl der Shards, die in der Sammlung erstellt werden sollen. Weitere Informationen zu Shards finden Sie unter Terminologie.
    meta.milvus.consistencyLevelKonsistenzstufe für die Sammlung in Milvus. Weitere Informationen finden Sie unter Konsistenz.
  • source

    ParameterBeschreibung
    source.esVerbindungskonfigurationen für den Elasticsearch-Quellserver.
    source.es.urlsAdresse des Elasticsearch-Quellservers.
    source.es.usernameBenutzername für den Elasticsearch-Server.
    source.es.passwordPasswort für den Elasticsearch-Server.
  • target

    ParameterBeschreibung
    target.modeSpeicherort für Dumpdateien. Gültige Werte:
    - local: Ausgelesene Dateien auf lokalen Festplatten speichern.
    - remote: Ausgelesene Dateien auf Objektspeicher speichern.
    target.remote.outputDirAusgabeverzeichnispfad im Cloud-Speicher-Bucket.
    target.remote.cloudAnbieter des Cloud-Speicherdienstes. Beispielwerte: aws, gcp, azure.
    target.remote.regionCloud-Speicher-Region. Kann ein beliebiger Wert sein, wenn Sie lokales MinIO verwenden.
    target.remote.bucketBucket-Name für die Speicherung von Daten. Der Wert muss derselbe sein wie die Konfiguration in Milvus 2.x. Weitere Informationen finden Sie unter Systemkonfigurationen.
    target.remote.useIAMOb eine IAM-Rolle für die Verbindung verwendet werden soll.
    target.remote.checkBucketOb geprüft werden soll, ob der angegebene Bucket im Objektspeicher existiert.
    target.milvus2xVerbindungskonfigurationen für den Milvus 2.x-Zielserver.
    target.milvus2x.endpointAdresse des Milvus-Zielservers.
    target.milvus2x.usernameBenutzername für den Milvus 2.x-Server. Dieser Parameter ist erforderlich, wenn die Benutzerauthentifizierung für Ihren Milvus-Server aktiviert ist. Weitere Informationen finden Sie unter Aktivieren der Authentifizierung.
    target.milvus2x.passwordPasswort für den Milvus 2.x-Server. Dieser Parameter ist erforderlich, wenn die Benutzerauthentifizierung für Ihren Milvus-Server aktiviert ist. Weitere Informationen finden Sie unter Aktivieren der Authentifizierung.

Starten Sie die Migrationsaufgabe

Starten Sie die Migrationsaufgabe mit dem folgenden Befehl. Ersetzen Sie {YourConfigFilePath} durch das lokale Verzeichnis, in dem sich die Konfigurationsdatei migration.yaml befindet.

./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml

Nachfolgend sehen Sie ein Beispiel für eine erfolgreiche Migrationsprotokollausgabe:

[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!"]

Überprüfen Sie das Ergebnis

Sobald die Migrationsaufgabe ausgeführt wurde, können Sie API-Aufrufe tätigen oder Attu verwenden, um die Anzahl der migrierten Entitäten anzuzeigen. Weitere Informationen finden Sie unter Attu und get_collection_stats().

Referenz zur Feldzuordnung

Lesen Sie die folgende Tabelle, um zu verstehen, wie Feldtypen in Elasticsearch-Indizes auf Feldtypen in Milvus-Sammlungen abgebildet werden.

Für weitere Informationen über unterstützte Datentypen in Milvus, siehe Unterstützte Datentypen.

Elasticsearch FeldtypMilvus FeldtypBeschreibung
dichter_vektorFloatVectorDie Dimensionen des Vektors bleiben während der Migration unverändert.
SchlüsselwortVarCharLegt die maximale Länge fest (1 bis 65.535). Strings, die diese Grenze überschreiten, können Migrationsfehler auslösen.
textVarCharLegen Sie die maximale Länge fest (1 bis 65.535). Zeichenketten, die den Grenzwert überschreiten, können Migrationsfehler auslösen.
langInt64-
GanzzahlInt32-
doubleDoppelt-
FloatFloat-
booleanBool-
ObjektJSON-

Übersetzt vonDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?