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
- Versões de software:
- Elasticsearch de origem: 7.x ou 8.x
- Milvus de destino: 2.x
- Para obter detalhes sobre a instalação, consulte Instalação do Elasticsearch e Instalação do Milvus.
- Ferramentas necessárias:
- Ferramentade migração do Milvus. Para obter detalhes sobre a instalação, consulte Instalar a ferramenta de migração.
- Tipos de dados suportados para migração: Os campos a migrar do índice Elasticsearch de origem são dos seguintes tipos - dense_vector, keyword, text, long, integer, double, float, boolean, object. Os tipos de dados não listados aqui não são atualmente suportados para migração. Consulte a Referência de mapeamento de campo para obter informações detalhadas sobre mapeamentos de dados entre colecções Milvus e índices Elasticsearch.
- Requisitos do índice Elasticsearch:
- O índice Elasticsearch de origem tem de conter um campo de vetor do tipo
dense_vector
. A migração não pode ser iniciada sem um campo de vetor.
- O índice Elasticsearch de origem tem de conter um campo de vetor do tipo
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âmetro Descrição dumper.worker.workMode
O modo operacional do trabalho de migração. Definir para elasticsearch
quando migrar a partir de índices do Elasticsearch.dumper.worker.reader.bufferSize
Tamanho do buffer a ler do Elasticsearch em cada lote. Unidade: KB. meta
Parâmetro Descrição meta.mode
Especifica a fonte para meta configs. Atualmente, apenas config
é suportado.meta.index
Identifica o índice do Elasticsearch a partir do qual migrar os dados. meta.fields
Campos no índice do Elasticsearch a serem migrados. meta.fields.name
Nome do campo do Elasticsearch. meta.fields.maxLen
Comprimento máximo do campo. Este parâmetro só é necessário quando meta.fields.type
ékeyword
outext
.meta.fields.pk
Especifica se o campo serve como chave primária. meta.fields.type
Tipo 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.dims
Dimensão do campo de vetor. Esse parâmetro é necessário apenas quando meta.fields.type
édense_vector
.meta.milvus
Configurações específicas para a criação da coleção no Milvus 2.x. meta.milvus.collection
Nome da coleção Milvus. A predefinição é o nome do índice do Elasticsearch se não for especificado. meta.milvus.closeDynamicField
Especifica 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.shardNum
Número de shards a serem criados na coleção. Para obter mais informações sobre shards, consulte Terminologia. meta.milvus.consistencyLevel
Nível de consistência para a coleção em Milvus. Para obter mais informações, consulte Consistência. source
Parâmetro Descrição source.es
Configurações de ligação para o servidor Elasticsearch de origem. source.es.urls
Endereço do servidor Elasticsearch de origem. source.es.username
Nome de utilizador para o servidor Elasticsearch. source.es.password
Palavra-passe para o servidor Elasticsearch. target
Parâmetro Descrição target.mode
Local 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.outputDir
Caminho do diretório de saída no bucket de armazenamento em nuvem. target.remote.cloud
Fornecedor de serviços de armazenamento na nuvem. Valores de exemplo: aws
,gcp
,azure
.target.remote.region
Região de armazenamento em nuvem. Pode ser qualquer valor se você usar o MinIO local. target.remote.bucket
Nome 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.useIAM
Se deve ser utilizada uma função IAM para a ligação. target.remote.checkBucket
Se deve verificar se o bucket especificado existe no armazenamento de objetos. target.milvus2x
Configurações de conexão para o servidor Milvus 2.x de destino. target.milvus2x.endpoint
Endereço do servidor Milvus de destino. target.milvus2x.username
Nome 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.password
Password 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 Elasticsearch | Tipo de campo do Milvus | Descrição |
---|---|---|
vector_denso | FloatVector | As dimensões do vetor permanecem inalteradas durante a migração. |
palavra-chave | VarChar | Define o comprimento máximo (1 a 65.535). As cadeias de caracteres que excedam o limite podem provocar erros de migração. |
text | VarChar | Definir o comprimento máximo (1 a 65.535). As cadeias de caracteres que excedam o limite podem provocar erros de migração. |
long | Int64 | - |
integer | Int32 | - |
double | Double | - |
float | Float | - |
booleano | bool | - |
objeto | JSON | - |