milvus-logo
LFAI
Home
  • Migración Milvus

Desde Elasticsearch

Esta guía proporciona un proceso completo, paso a paso, para migrar datos de Elasticsearch a Milvus 2.x. Siguiendo esta guía, podrá transferir sus datos eficientemente, aprovechando las características avanzadas y el rendimiento mejorado de Milvus 2.x.

Requisitos previos

  • Versiones de software:
  • Herramientas necesarias:
  • Tipos de datos admitidos para la migración: Los campos a migrar desde el índice Elasticsearch de origen son de los siguientes tipos - dense_vector, keyword, text, long, integer, double, float, boolean, object. Los tipos de datos que no aparecen en esta lista no son compatibles actualmente con la migración. Consulte la Referencia de mapeo de campos para obtener información detallada sobre los mapeos de datos entre las colecciones Milvus y los índices Elasticsearch.
  • Requisitos del índice de Elasticsearch:
    • El índice Elasticsearch de origen debe contener un campo vectorial del tipo dense_vector. La migración no puede iniciarse sin un campo vectorial.

Configurar el archivo de migración

Guarde el archivo de configuración de migración de ejemplo como migration.yaml y modifique la configuración en función de sus condiciones reales. Puede colocar el archivo de configuración en cualquier directorio 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.

La siguiente tabla describe los parámetros del archivo de configuración de ejemplo. Para obtener una lista completa de configuraciones, consulte Milvus Migration: Elasticsearch a Milvus 2.x.

  • dumper

    ParámetroDescripción
    dumper.worker.workModeEl modo operativo del trabajo de migración. Establézcalo en elasticsearch cuando migre desde índices de Elasticsearch.
    dumper.worker.reader.bufferSizeTamaño del búfer a leer desde Elasticsearch en cada lote. Unidad: KB.
  • meta

    ParámetroDescripción
    meta.modeEspecifica la fuente de las meta configuraciones. Actualmente, sólo se admite config.
    meta.indexIdentifica el índice de Elasticsearch desde el que migrar los datos.
    meta.fieldsCampos dentro del índice Elasticsearch a migrar.
    meta.fields.nameNombre del campo de Elasticsearch.
    meta.fields.maxLenLongitud máxima del campo. Este parámetro sólo es necesario cuando meta.fields.type es keyword o text.
    meta.fields.pkEspecifica si el campo sirve como clave primaria.
    meta.fields.typeTipo de datos del campo Elasticsearch. Actualmente, se admiten los siguientes tipos de datos en Elasticsearch: dense_vector, keyword, text, long, integer, double, float, boolean, object.
    meta.fields.dimsDimensión del campo vectorial. Este parámetro sólo es necesario cuando meta.fields.type es dense_vector.
    meta.milvusConfiguraciones específicas para crear la colección en Milvus 2.x.
    meta.milvus.collectionNombre de la colección Milvus. Por defecto es el nombre del índice Elasticsearch si no se especifica.
    meta.milvus.closeDynamicFieldEspecifica si se deshabilita el campo dinámico en la colección. El valor predeterminado es false. Para obtener más información sobre los campos dinámicos, consulte Habilitar campo dinámico.
    meta.milvus.shardNumNúmero de shards que se crearán en la colección. Para obtener más información sobre los fragmentos, consulte Terminología.
    meta.milvus.consistencyLevelNivel de consistencia de la colección en Milvus. Para más información, consulte Consistencia.
  • source

    ParámetroDescripción
    source.esConfiguración de conexión para el servidor Elasticsearch de origen.
    source.es.urlsDirección del servidor Elasticsearch de origen.
    source.es.usernameNombre de usuario para el servidor Elasticsearch.
    source.es.passwordContraseña para el servidor Elasticsearch.
  • target

    ParámetroDescripción
    target.modeUbicación de almacenamiento para los archivos volcados. Valores válidos:
    - local: Almacenar archivos volcados en discos locales.
    - remote: Almacenar archivos volcados en almacenamiento de objetos.
    target.remote.outputDirRuta del directorio de salida en el bucket de almacenamiento en la nube.
    target.remote.cloudProveedor del servicio de almacenamiento en la nube. Valores de ejemplo: aws, gcp, azure.
    target.remote.regionRegión de almacenamiento en la nube. Puede ser cualquier valor si utiliza MinIO local.
    target.remote.bucketNombre del cubo para almacenar datos. El valor debe ser el mismo que el configurado en Milvus 2.x. Para más información, consulte Configuraciones del sistema.
    target.remote.useIAMSi se debe utilizar un rol IAM para la conexión.
    target.remote.checkBucketSi se debe comprobar si el cubo especificado existe en el almacenamiento de objetos.
    target.milvus2xConfiguraciones de conexión para el servidor Milvus 2.x de destino.
    target.milvus2x.endpointDirección del servidor Milvus de destino.
    target.milvus2x.usernameNombre de usuario para el servidor Milvus 2.x. Este parámetro es necesario si la autenticación de usuario está habilitada para su servidor Milvus. Para más información, consulte Activar autenticación.
    target.milvus2x.passwordContraseña para el servidor Milvus 2.x. Este parámetro es necesario si la autenticación de usuario está activada para su servidor Milvus. Para más información, consulte Activar autenticación.

Inicie la tarea de migración

Inicie la tarea de migración con el siguiente comando. Sustituya {YourConfigFilePath} por el directorio local en el que se encuentra el archivo de configuración migration.yaml.

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

A continuación se muestra un ejemplo de una salida de registro de migración correcta:

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

Verificar el resultado

Una vez ejecutada la tarea de migración, puede realizar llamadas a la API o utilizar Attu para ver el número de entidades migradas. Para obtener más información, consulte Attu y get_collection_stats().

Referencia de asignación de campos

Revise la siguiente tabla para comprender cómo se asignan los tipos de campo en los índices de Elasticsearch a los tipos de campo en las colecciones de Milvus.

Para obtener más información sobre los tipos de datos admitidos en Milvus, consulte Tipos de datos admitidos.

Tipo de campo ElasticsearchTipo de campo MilvusDescripción
vector_densoFloatVectorLas dimensiones del vector no cambian durante la migración.
palabra claveVarCharEstablece la longitud máxima (de 1 a 65.535). Las cadenas que superen este límite pueden provocar errores de migración.
textoVarCharLongitud máxima (1 a 65.535). Las cadenas que superen el límite pueden provocar errores de migración.
longInt64-
enteroInt32-
dobleDoble-
floatFloat-
booleanoBool-
objetoJSON-

Traducido porDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?