Из Elasticsearch
В этом руководстве представлен полный пошаговый процесс переноса данных из Elasticsearch в Milvus 2.x. Следуя этому руководству, вы сможете эффективно перенести свои данные, используя расширенные возможности Milvus 2.x и улучшенную производительность.
Необходимые условия
- Версии программного обеспечения:
- Исходный Elasticsearch: 7.x или 8.x
- Целевой Milvus: 2.x
- Подробности установки см. в разделах Установка Elasticsearch и Установка Milvus.
- Необходимые инструменты:
- ИнструментMilvus-migration. Подробности установки см. в разделе Установка инструмента миграции.
- Поддерживаемые типы данных для миграции: Поля для миграции из исходного индекса Elasticsearch относятся к следующим типам - dense_vector, keyword, text, long, integer, double, float, boolean, object. Типы данных, не перечисленные здесь, в настоящее время не поддерживаются для миграции. Подробную информацию о сопоставлении данных между коллекциями Milvus и индексами Elasticsearch см. в справочнике "Сопоставление полей".
- Требования к индексу Elasticsearch:
- Исходный индекс Elasticsearch должен содержать векторное поле типа
dense_vector
. Миграция не может начаться без векторного поля.
- Исходный индекс Elasticsearch должен содержать векторное поле типа
Настройка файла миграции
Сохраните пример файла конфигурации миграции под именем 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). Строки, превышающие лимит, могут вызвать ошибки миграции. |
long | Int64 | - |
целое число | Int32 | - |
двойное | Double | - |
float | Float | - |
boolean | Bool | - |
объект | JSON | - |