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
- Software-Versionen:
- Quelle Elasticsearch: 7.x oder 8.x
- Ziel Milvus: 2.x
- Einzelheiten zur Installation finden Sie unter Installation von Elasticsearch und Installation von Milvus.
- Erforderliche Werkzeuge:
- Milvus-Migrationswerkzeug. Einzelheiten zur Installation finden Sie unter Migrationswerkzeug installieren.
- Unterstützte Datentypen für die Migration: Die aus dem Elasticsearch-Quellindex zu migrierenden Felder sind von folgenden Typen: dense_vector, keyword, text, long, integer, double, float, boolean, object. Datentypen, die hier nicht aufgeführt sind, werden derzeit für die Migration nicht unterstützt. Detaillierte Informationen zu Datenmappings zwischen Milvus-Sammlungen und Elasticsearch-Indizes finden Sie in der Field mapping reference.
- Anforderungen an den Elasticsearch-Index:
- Der Quell-Elasticsearch-Index muss ein Vektorfeld vom Typ
dense_vector
enthalten. Ohne ein Vektorfeld kann die Migration nicht gestartet werden.
- Der Quell-Elasticsearch-Index muss ein Vektorfeld vom Typ
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
Parameter Beschreibung dumper.worker.workMode
Der Betriebsmodus des Migrationsauftrags. Bei der Migration von Elasticsearch-Indizes auf elasticsearch
setzen.dumper.worker.reader.bufferSize
Puffergröße, die in jedem Batch aus Elasticsearch gelesen wird. Einheit: KB. meta
Parameter Beschreibung meta.mode
Gibt die Quelle für Meta-Konfigurationen an. Derzeit wird nur config
unterstützt.meta.index
Identifiziert den Elasticsearch-Index, aus dem Daten migriert werden sollen. meta.fields
Felder innerhalb des zu migrierenden Elasticsearch-Index. meta.fields.name
Name des Elasticsearch-Feldes. meta.fields.maxLen
Maximale Länge des Feldes. Dieser Parameter ist nur erforderlich, wenn meta.fields.type
keyword
odertext
ist.meta.fields.pk
Gibt an, ob das Feld als Primärschlüssel dient. meta.fields.type
Datentyp des Elasticsearch-Feldes. Derzeit werden die folgenden Datentypen in Elasticsearch unterstützt: dense_vector, keyword, text, long, integer, double, float, boolean, object. meta.fields.dims
Dimension des Vektorfeldes. Dieser Parameter ist nur erforderlich, wenn meta.fields.type
dense_vector
ist.meta.milvus
Spezielle Konfigurationen für die Erstellung der Sammlung in Milvus 2.x. meta.milvus.collection
Name der Milvus-Sammlung. Der Standardwert ist der Elasticsearch-Indexname, wenn er nicht angegeben wird. meta.milvus.closeDynamicField
Gibt 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.shardNum
Anzahl der Shards, die in der Sammlung erstellt werden sollen. Weitere Informationen zu Shards finden Sie unter Terminologie. meta.milvus.consistencyLevel
Konsistenzstufe für die Sammlung in Milvus. Weitere Informationen finden Sie unter Konsistenz. source
Parameter Beschreibung source.es
Verbindungskonfigurationen für den Elasticsearch-Quellserver. source.es.urls
Adresse des Elasticsearch-Quellservers. source.es.username
Benutzername für den Elasticsearch-Server. source.es.password
Passwort für den Elasticsearch-Server. target
Parameter Beschreibung target.mode
Speicherort für Dumpdateien. Gültige Werte:
-local
: Ausgelesene Dateien auf lokalen Festplatten speichern.
-remote
: Ausgelesene Dateien auf Objektspeicher speichern.target.remote.outputDir
Ausgabeverzeichnispfad im Cloud-Speicher-Bucket. target.remote.cloud
Anbieter des Cloud-Speicherdienstes. Beispielwerte: aws
,gcp
,azure
.target.remote.region
Cloud-Speicher-Region. Kann ein beliebiger Wert sein, wenn Sie lokales MinIO verwenden. target.remote.bucket
Bucket-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.useIAM
Ob eine IAM-Rolle für die Verbindung verwendet werden soll. target.remote.checkBucket
Ob geprüft werden soll, ob der angegebene Bucket im Objektspeicher existiert. target.milvus2x
Verbindungskonfigurationen für den Milvus 2.x-Zielserver. target.milvus2x.endpoint
Adresse des Milvus-Zielservers. target.milvus2x.username
Benutzername 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.password
Passwort 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 Feldtyp | Milvus Feldtyp | Beschreibung |
---|---|---|
dichter_vektor | FloatVector | Die Dimensionen des Vektors bleiben während der Migration unverändert. |
Schlüsselwort | VarChar | Legt die maximale Länge fest (1 bis 65.535). Strings, die diese Grenze überschreiten, können Migrationsfehler auslösen. |
text | VarChar | Legen Sie die maximale Länge fest (1 bis 65.535). Zeichenketten, die den Grenzwert überschreiten, können Migrationsfehler auslösen. |
lang | Int64 | - |
Ganzzahl | Int32 | - |
double | Doppelt | - |
Float | Float | - |
boolean | Bool | - |
Objekt | JSON | - |