🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Миграция Мильвуса
  • Home
  • Docs
  • Миграция Мильвуса

  • Из Elasticsearch

Из Elasticsearch

В этом руководстве представлен полный пошаговый процесс переноса данных из Elasticsearch в Milvus 2.x. Следуя этому руководству, вы сможете эффективно перенести свои данные, используя расширенные возможности Milvus 2.x и улучшенную производительность.

Необходимые условия

  • Версии программного обеспечения:
  • Необходимые инструменты:
  • Поддерживаемые типы данных для миграции: Поля для миграции из исходного индекса Elasticsearch относятся к следующим типам - dense_vector, keyword, text, long, integer, double, float, boolean, object. Типы данных, не перечисленные здесь, в настоящее время не поддерживаются для миграции. Подробную информацию о сопоставлении данных между коллекциями Milvus и индексами Elasticsearch см. в справочнике "Сопоставление полей".
  • Требования к индексу Elasticsearch:
    • Исходный индекс Elasticsearch должен содержать векторное поле типа dense_vector. Миграция не может начаться без векторного поля.

Настройка файла миграции

Сохраните пример файла конфигурации миграции под именем migration.yaml и измените конфигурацию в соответствии с вашими реальными условиями. Вы можете поместить файл конфигурации в любой локальный каталог.

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.

В следующей таблице описаны параметры в файле конфигурации примера. Полный список конфигураций см. в разделе Миграция Milvus: Elasticsearch на Milvus 2.x.

  • dumper

    ПараметрОписание
    dumper.worker.workModeРежим работы задания миграции. Установите значение elasticsearch при миграции из индексов Elasticsearch.
    dumper.worker.reader.bufferSizeРазмер буфера для чтения из Elasticsearch в каждом пакете. Единица измерения: КБ.
  • meta

    ПараметрОписание
    meta.modeУказывает источник метаконфигураций. В настоящее время поддерживается только config.
    meta.indexОпределяет индекс Elasticsearch для переноса данных.
    meta.fieldsПоля в индексе Elasticsearch, которые необходимо перенести.
    meta.fields.nameИмя поля Elasticsearch.
    meta.fields.maxLenМаксимальная длина поля. Этот параметр требуется только в том случае, если meta.fields.type - это keyword или text.
    meta.fields.pkУказывает, служит ли поле первичным ключом.
    meta.fields.typeТип данных поля Elasticsearch. В настоящее время в Elasticsearch поддерживаются следующие типы данных: dense_vector, keyword, text, long, integer, double, float, boolean, object.
    meta.fields.dimsРазмерность векторного поля. Этот параметр требуется только в том случае, если meta.fields.type - dense_vector.
    meta.milvusКонфиги, специфичные для создания коллекции в Milvus 2.x.
    meta.milvus.collectionИмя коллекции Milvus. По умолчанию используется имя индекса Elasticsearch, если оно не указано.
    meta.milvus.closeDynamicFieldУказывает, следует ли отключить динамическое поле в коллекции. По умолчанию false. Дополнительные сведения о динамических полях см. в разделе Включить динамическое поле.
    meta.milvus.shardNumКоличество шардов, которые будут созданы в коллекции. Дополнительные сведения об осколках см. в разделе Терминология.
    meta.milvus.consistencyLevelУровень согласованности для коллекции в Milvus. Дополнительные сведения см. в разделе Согласованность.
  • source

    ПараметрОписание
    source.esКонфигурация подключения для исходного сервера Elasticsearch.
    source.es.urlsАдрес исходного сервера Elasticsearch.
    source.es.usernameИмя пользователя для сервера Elasticsearch.
    source.es.passwordПароль для сервера Elasticsearch.
  • target

    ПараметрОписание
    target.modeМесто хранения файлов дампа. Допустимые значения:
    - local: Хранить файлы дампа на локальных дисках.
    - remote: Хранить файлы дампа в объектном хранилище.
    target.remote.outputDirПуть к выходному каталогу в облачном хранилище.
    target.remote.cloudПоставщик услуг облачного хранилища. Примерные значения: aws, gcp, azure.
    target.remote.regionРегион облачного хранилища. Может иметь любое значение, если вы используете локальное MinIO.
    target.remote.bucketИмя ведра для хранения данных. Значение должно совпадать с конфигом в Milvus 2.x. Дополнительные сведения см. в разделе Конфигурации системы.
    target.remote.useIAMИспользовать ли IAM-роль для подключения.
    target.remote.checkBucketПроверять, существует ли указанный бакет в объектном хранилище.
    target.milvus2xКонфигурация подключения для целевого сервера Milvus 2.x.
    target.milvus2x.endpointАдрес целевого сервера Milvus.
    target.milvus2x.usernameИмя пользователя для сервера Milvus 2.x. Этот параметр необходим, если на сервере Milvus включена аутентификация пользователей. Дополнительные сведения см. в разделе Включение аутентификации.
    target.milvus2x.passwordПароль для сервера Milvus 2.x. Этот параметр необходим, если для сервера Milvus включена аутентификация пользователей. Дополнительные сведения см. в разделе Включить аутентификацию.

Запуск задачи миграции

Запустите задачу миграции с помощью следующей команды. Замените {YourConfigFilePath} на локальный каталог, в котором находится файл конфигурации migration.yaml.

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

Ниже приведен пример успешного вывода журнала миграции:

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

Проверка результата

После выполнения задачи миграции вы можете выполнять вызовы API или использовать Attu для просмотра количества перенесенных сущностей. Дополнительную информацию см. в разделе Attu и get_collection_stats().

Справочник по сопоставлению полей

Ознакомьтесь с приведенной ниже таблицей, чтобы понять, как типы полей в индексах Elasticsearch сопоставляются с типами полей в коллекциях Milvus.

Дополнительные сведения о поддерживаемых типах данных в Milvus см. в разделе Поддерживаемые типы данных.

Тип поля ElasticsearchТип поля MilvusОписание
плотный_векторFloatVectorРазмеры вектора остаются неизменными при миграции.
ключевое словоVarCharУстанавливает максимальную длину (от 1 до 65 535). Строки, превышающие этот предел, могут вызвать ошибки миграции.
текстVarCharУстановите максимальную длину (от 1 до 65 535). Строки, превышающие лимит, могут вызвать ошибки миграции.
longInt64-
целое числоInt32-
двойноеDouble-
floatFloat-
booleanBool-
объектJSON-

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?