milvus-logo
LFAI
Home
  • Milvus Migration

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:
  • Outils requis:
  • 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.

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ètreDescription
    dumper.worker.workModeMode opérationnel de la tâche de migration. Défini sur elasticsearch lors de la migration à partir d'index Elasticsearch.
    dumper.worker.reader.bufferSizeTaille de la mémoire tampon à lire à partir d'Elasticsearch dans chaque lot. Unité : KO.
  • meta

    ParamètreDescription
    meta.modeSpécifie la source des méta-configs. Actuellement, seul config est pris en charge.
    meta.indexIdentifie l'index Elasticsearch à partir duquel les données doivent migrer.
    meta.fieldsChamps de l'index Elasticsearch à migrer.
    meta.fields.nameNom du champ Elasticsearch.
    meta.fields.maxLenLongueur maximale du champ. Ce paramètre n'est requis que si meta.fields.type est keyword ou text.
    meta.fields.pkIndique si le champ sert de clé primaire.
    meta.fields.typeType 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.dimsDimension du champ vectoriel. Ce paramètre n'est requis que lorsque meta.fields.type est dense_vector.
    meta.milvusConfigs spécifiques à la création de la collection dans Milvus 2.x.
    meta.milvus.collectionNom de la collection Milvus. Le nom de l'index Elasticsearch est utilisé par défaut s'il n'est pas spécifié.
    meta.milvus.closeDynamicFieldSpé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.shardNumNombre 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.consistencyLevelNiveau de cohérence de la collection dans Milvus. Pour plus d'informations, voir Cohérence.
  • source

    ParamètreParamètre Description
    source.esConfigurations de connexion pour le serveur Elasticsearch source.
    source.es.urlsAdresse du serveur Elasticsearch source.
    source.es.usernameNom d'utilisateur du serveur Elasticsearch.
    source.es.passwordMot de passe pour le serveur Elasticsearch.
  • target

    ParamètreDescription
    target.modeEmplacement 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.outputDirChemin du répertoire de sortie dans le panier de stockage en nuage.
    target.remote.cloudFournisseur de services de stockage en nuage. Exemples de valeurs : aws, gcp, azure.
    target.remote.regionRégion de stockage en nuage. Il peut s'agir de n'importe quelle valeur si vous utilisez MinIO local.
    target.remote.bucketNom 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.useIAMSi un rôle IAM doit être utilisé pour la connexion.
    target.remote.checkBucketVérifier si le seau spécifié existe dans le stockage d'objets.
    target.milvus2xConfigurations de connexion pour le serveur Milvus 2.x cible.
    target.milvus2x.endpointAdresse du serveur Milvus cible.
    target.milvus2x.usernameNom 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.passwordMot 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 ElasticsearchType de champ MilvusDescription du champ
dense_vectorVecteur flottantLes dimensions du vecteur restent inchangées pendant la migration.
mot-cléVarCharDéfinit la longueur maximale (1 à 65 535). Les chaînes de caractères dépassant cette limite peuvent déclencher des erreurs de migration.
texteVarCharLongueur maximale (1 à 65 535). Les chaînes de caractères dépassant la limite peuvent déclencher des erreurs de migration.
longInt64-
entierInt32-
doubleDouble-
floatFlottant-
booléenBool-
objetJSON-

Traduit parDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?