Depuis Elasticsearch
Ce guide fournit un processus complet, étape par étape, pour la migration des données d'Elasticsearch vers Milvus 2.x. En suivant ce guide, vous serez en mesure de transférer efficacement vos données, en tirant parti des fonctionnalités avancées et des performances améliorées de Milvus 2.x.
Conditions préalables
- Versions du logiciel:
- Source Elasticsearch : 7.x ou 8.x
- Milvus cible : 2.x
- Pour plus de détails sur l'installation, voir Installation d'Elasticsearch et Installation de Milvus.
- Outils requis:
- Outil demigration Milvus. Pour plus de détails sur l'installation, voir Installer l'outil de migration.
- Types de données pris en charge pour la migration: Les champs à migrer à partir de l'index Elasticsearch source sont des types suivants : dense_vector, keyword, text, long, integer, double, float, boolean, object. Les types de données qui ne figurent pas dans cette liste ne sont actuellement pas pris en charge pour la migration. Reportez-vous à la référence de mappage des champs pour obtenir des informations détaillées sur les mappages de données entre les collections Milvus et les index Elasticsearch.
- Exigences relatives à l'index Elasticsearch:
- L'index Elasticsearch source doit contenir un champ vectoriel du type
dense_vector
. La migration ne peut pas commencer sans champ vectoriel.
- L'index Elasticsearch source doit contenir un champ vectoriel du type
Configurer le fichier de migration
Enregistrez le fichier de configuration de l'exemple de migration sous migration.yaml
et modifiez les configurations en fonction de vos conditions réelles. Vous pouvez placer le fichier de configuration dans n'importe quel répertoire local.
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.
Le tableau suivant décrit les paramètres du fichier de configuration de l'exemple. Pour une liste complète des configurations, reportez-vous à Milvus Migration : Elasticsearch vers Milvus 2.x.
dumper
Paramètre Description dumper.worker.workMode
Mode opérationnel de la tâche de migration. Défini sur elasticsearch
lors de la migration à partir d'index Elasticsearch.dumper.worker.reader.bufferSize
Taille de la mémoire tampon à lire à partir d'Elasticsearch dans chaque lot. Unité : KO. meta
Paramètre Description meta.mode
Spécifie la source des méta-configs. Actuellement, seul config
est pris en charge.meta.index
Identifie l'index Elasticsearch à partir duquel les données doivent migrer. meta.fields
Champs de l'index Elasticsearch à migrer. meta.fields.name
Nom du champ Elasticsearch. meta.fields.maxLen
Longueur maximale du champ. Ce paramètre n'est requis que si meta.fields.type
estkeyword
outext
.meta.fields.pk
Indique si le champ sert de clé primaire. meta.fields.type
Type de données du champ Elasticsearch. Actuellement, les types de données suivants sont pris en charge dans Elasticsearch : dense_vector, keyword, text, long, integer, double, float, boolean, object. meta.fields.dims
Dimension du champ vectoriel. Ce paramètre n'est requis que lorsque meta.fields.type
estdense_vector
.meta.milvus
Configs spécifiques à la création de la collection dans Milvus 2.x. meta.milvus.collection
Nom de la collection Milvus. Le nom de l'index Elasticsearch est utilisé par défaut s'il n'est pas spécifié. meta.milvus.closeDynamicField
Spécifie s'il faut désactiver le champ dynamique dans la collection. La valeur par défaut est false
. Pour plus d'informations sur les champs dynamiques, voir Activer le champ dynamique.meta.milvus.shardNum
Nombre de groupes de données à créer dans la collection. Pour plus d'informations sur les groupes de données, reportez-vous à la section Terminologie. meta.milvus.consistencyLevel
Niveau de cohérence de la collection dans Milvus. Pour plus d'informations, voir Cohérence. source
Paramètre Paramètre Description source.es
Configurations de connexion pour le serveur Elasticsearch source. source.es.urls
Adresse du serveur Elasticsearch source. source.es.username
Nom d'utilisateur du serveur Elasticsearch. source.es.password
Mot de passe pour le serveur Elasticsearch. target
Paramètre Description target.mode
Emplacement de stockage des fichiers vidés. Valeurs valides :
-local
: Stockage des fichiers vidés sur les disques locaux.
-remote
: Stockage des fichiers vidés sur le stockage d'objets.target.remote.outputDir
Chemin du répertoire de sortie dans le panier de stockage en nuage. target.remote.cloud
Fournisseur de services de stockage en nuage. Exemples de valeurs : aws
,gcp
,azure
.target.remote.region
Région de stockage en nuage. Il peut s'agir de n'importe quelle valeur si vous utilisez MinIO local. target.remote.bucket
Nom du bac pour le stockage des données. La valeur doit être la même que la configuration dans Milvus 2.x. Pour plus d'informations, voir Configurations du système. target.remote.useIAM
Si un rôle IAM doit être utilisé pour la connexion. target.remote.checkBucket
Vérifier si le seau spécifié existe dans le stockage d'objets. target.milvus2x
Configurations de connexion pour le serveur Milvus 2.x cible. target.milvus2x.endpoint
Adresse du serveur Milvus cible. target.milvus2x.username
Nom d'utilisateur pour le serveur Milvus 2.x. Ce paramètre est requis si l'authentification utilisateur est activée pour votre serveur Milvus. Pour plus d'informations, voir Activer l'authentification. target.milvus2x.password
Mot de passe pour le serveur Milvus 2.x. Ce paramètre est requis si l'authentification utilisateur est activée pour votre serveur Milvus. Pour plus d'informations, voir Activer l'authentification.
Démarrer la tâche de migration
Démarrer la tâche de migration avec la commande suivante. Remplacer {YourConfigFilePath}
par le répertoire local où se trouve le fichier de configuration migration.yaml
.
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Voici un exemple de sortie de journal de migration réussie :
[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!"]
Vérifier le résultat
Une fois la tâche de migration exécutée, vous pouvez effectuer des appels API ou utiliser Attu pour afficher le nombre d'entités migrées. Pour plus d'informations, consultez Attu et get_collection_stats().
Référence au mappage des champs
Consultez le tableau ci-dessous pour comprendre comment les types de champs des index Elasticsearch sont mappés aux types de champs des collections Milvus.
Pour plus d'informations sur les types de données pris en charge dans Milvus, voir Types de données pris en charge.
Type de champ Elasticsearch | Type de champ Milvus | Description du champ |
---|---|---|
dense_vector | Vecteur flottant | Les dimensions du vecteur restent inchangées pendant la migration. |
mot-clé | VarChar | Définit la longueur maximale (1 à 65 535). Les chaînes de caractères dépassant cette limite peuvent déclencher des erreurs de migration. |
texte | VarChar | Longueur maximale (1 à 65 535). Les chaînes de caractères dépassant la limite peuvent déclencher des erreurs de migration. |
long | Int64 | - |
entier | Int32 | - |
double | Double | - |
float | Flottant | - |
booléen | Bool | - |
objet | JSON | - |