milvus-logo
LFAI
Home
  • Migração de Milvus

Do Elasticsearch

Este guia fornece um processo abrangente e passo a passo para a migração de dados do Elasticsearch para o Milvus 2.x. Ao seguir este guia, poderá transferir os seus dados de forma eficiente, tirando partido das funcionalidades avançadas do Milvus 2.x e de um desempenho melhorado.

Pré-requisitos

Configurar o ficheiro de migração

Salve o arquivo de configuração de migração de exemplo como migration.yaml e modifique as configurações com base nas suas condições reais. Você pode colocar o arquivo de configuração em qualquer diretório 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.

A tabela a seguir descreve os parâmetros no arquivo de configuração de exemplo. Para obter uma lista completa de configurações, consulte Milvus Migration: Elasticsearch para Milvus 2.x.

  • dumper

    ParâmetroDescrição
    dumper.worker.workModeO modo operacional do trabalho de migração. Definir para elasticsearch quando migrar a partir de índices do Elasticsearch.
    dumper.worker.reader.bufferSizeTamanho do buffer a ler do Elasticsearch em cada lote. Unidade: KB.
  • meta

    ParâmetroDescrição
    meta.modeEspecifica a fonte para meta configs. Atualmente, apenas config é suportado.
    meta.indexIdentifica o índice do Elasticsearch a partir do qual migrar os dados.
    meta.fieldsCampos no índice do Elasticsearch a serem migrados.
    meta.fields.nameNome do campo do Elasticsearch.
    meta.fields.maxLenComprimento máximo do campo. Este parâmetro só é necessário quando meta.fields.type é keyword ou text.
    meta.fields.pkEspecifica se o campo serve como chave primária.
    meta.fields.typeTipo de dados do campo do Elasticsearch. Atualmente, são suportados os seguintes tipos de dados no Elasticsearch: dense_vector, keyword, text, long, integer, double, float, boolean, object.
    meta.fields.dimsDimensão do campo de vetor. Esse parâmetro é necessário apenas quando meta.fields.type é dense_vector.
    meta.milvusConfigurações específicas para a criação da coleção no Milvus 2.x.
    meta.milvus.collectionNome da coleção Milvus. A predefinição é o nome do índice do Elasticsearch se não for especificado.
    meta.milvus.closeDynamicFieldEspecifica se pretende desativar o campo dinâmico na coleção. A predefinição é false. Para obter mais informações sobre campos dinâmicos, consulte Ativar campo dinâmico.
    meta.milvus.shardNumNúmero de shards a serem criados na coleção. Para obter mais informações sobre shards, consulte Terminologia.
    meta.milvus.consistencyLevelNível de consistência para a coleção em Milvus. Para obter mais informações, consulte Consistência.
  • source

    ParâmetroDescrição
    source.esConfigurações de ligação para o servidor Elasticsearch de origem.
    source.es.urlsEndereço do servidor Elasticsearch de origem.
    source.es.usernameNome de utilizador para o servidor Elasticsearch.
    source.es.passwordPalavra-passe para o servidor Elasticsearch.
  • target

    ParâmetroDescrição
    target.modeLocal de armazenamento dos ficheiros descarregados. Valores válidos:
    - local: Armazenar os ficheiros despejados em discos locais.
    - remote: Armazenar os ficheiros despejados no armazenamento de objectos.
    target.remote.outputDirCaminho do diretório de saída no bucket de armazenamento em nuvem.
    target.remote.cloudFornecedor de serviços de armazenamento na nuvem. Valores de exemplo: aws, gcp, azure.
    target.remote.regionRegião de armazenamento em nuvem. Pode ser qualquer valor se você usar o MinIO local.
    target.remote.bucketNome do bucket para armazenamento de dados. O valor deve ser o mesmo que o configurado no Milvus 2.x. Para mais informações, consulte Configurações do sistema.
    target.remote.useIAMSe deve ser utilizada uma função IAM para a ligação.
    target.remote.checkBucketSe deve verificar se o bucket especificado existe no armazenamento de objetos.
    target.milvus2xConfigurações de conexão para o servidor Milvus 2.x de destino.
    target.milvus2x.endpointEndereço do servidor Milvus de destino.
    target.milvus2x.usernameNome de utilizador para o servidor Milvus 2.x. Este parâmetro é necessário se a autenticação do utilizador estiver activada para o seu servidor Milvus. Para mais informações, consulte Enable Authentication (Ativar autenticação).
    target.milvus2x.passwordPassword para o servidor Milvus 2.x. Este parâmetro é necessário se a autenticação do utilizador estiver activada para o seu servidor Milvus. Para obter mais informações, consulte Ativar a autenticação.

Iniciar a tarefa de migração

Inicie a tarefa de migração com o seguinte comando. Substitua {YourConfigFilePath} pelo diretório local onde reside o ficheiro de configuração migration.yaml.

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

O seguinte é um exemplo de uma saída de registo de migração bem sucedida:

[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 o resultado

Depois de a tarefa de migração ser executada, pode fazer chamadas à API ou utilizar o Attu para ver o número de entidades migradas. Para obter mais informações, consulte Attu e get_collection_stats().

Referência de mapeamento de campo

Analise a tabela abaixo para entender como os tipos de campo nos índices do Elasticsearch são mapeados para os tipos de campo nas coleções do Milvus.

Para obter mais informações sobre os tipos de dados suportados no Milvus, consulte Tipos de dados suportados.

Tipo de campo do ElasticsearchTipo de campo do MilvusDescrição
vector_densoFloatVectorAs dimensões do vetor permanecem inalteradas durante a migração.
palavra-chaveVarCharDefine o comprimento máximo (1 a 65.535). As cadeias de caracteres que excedam o limite podem provocar erros de migração.
textVarCharDefinir o comprimento máximo (1 a 65.535). As cadeias de caracteres que excedam o limite podem provocar erros de migração.
longInt64-
integerInt32-
doubleDouble-
floatFloat-
booleanobool-
objetoJSON-

Traduzido porDeepL

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?