Files
landing_page/qdrant-landing/content/documentation/migrate-to-qdrant/from-qdrant.md
T
1a40961d62 fix: linkchecker include filter port mismatch (#2242)
* initial commit; fixed anchor links on internal docs pages

* add back in absolute paths for links in code comments

* fix: update linkchecker include filter to match server port 1314

PR #1629 changed the Hugo server to port 1314 but forgot to update
the --include filter, which still matched port 1313. This caused all
links to be excluded, making the checker a no-op (0 checked, 82277 excluded).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix url rewrite regex so images are not impacted

* Fix links from non-documentation pages

* Fix broken links

* more broken links

* more broken links

* broken link

* Add srcset width descriptor to .lycheeignore

* Ignore URLs that contain a % character

* Anchor regex so it matches the entire URL

---------

Co-authored-by: kanungle <neil.kanungo@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>
2026-03-30 17:21:32 +02:00

3.9 KiB

title, weight
title weight
From Qdrant 110

Migrate Between Qdrant Instances

Use the qdrant subcommand to copy a collection from one Qdrant instance to another — or between collections within the same instance. The tool automatically recreates the full collection schema (vector config, HNSW settings, quantization, sharding) on the target.

What You Need

  • Source Qdrant URL — gRPC endpoint of the source instance
  • Target Qdrant URL — gRPC endpoint of the target instance
  • Source collection name
  • Target collection name (must be different from source if using the same instance)
  • API keys — for each instance, if authentication is enabled

Concept Mapping

Source Qdrant Target Qdrant Notes
Collection Collection Recreated with exact schema
Named vectors Named vectors All vector types preserved
Sparse vectors Sparse vectors Direct mapping
Payload Payload Direct mapping
Payload indexes Payload indexes Recreated if --target.ensure-payload-indexes is true
Shard keys Shard keys Recreated automatically

Run the Migration

Between Two Instances

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant \
    --source.url 'http://source-instance:6334' \
    --source.api-key 'source-api-key' \
    --source.collection 'your-collection' \
    --target.url 'https://your-instance.cloud.qdrant.io:6334' \
    --target.api-key 'your-qdrant-api-key' \
    --target.collection 'your-collection'

Within the Same Instance

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant \
    --source.url 'http://localhost:6334' \
    --source.collection 'original-collection' \
    --target.url 'http://localhost:6334' \
    --target.collection 'new-collection'

With Parallel Workers

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant \
    --source.url 'http://source-instance:6334' \
    --source.api-key 'source-api-key' \
    --source.collection 'your-collection' \
    --target.url 'https://your-instance.cloud.qdrant.io:6334' \
    --target.api-key 'your-qdrant-api-key' \
    --target.collection 'your-collection' \
    --migration.num-workers 4

All Source Flags

Flag Required Description
--source.collection Yes Source collection name
--source.url No Source gRPC URL (default: http://localhost:6334)
--source.api-key No API key for the source instance
--source.max-message-size No Maximum gRPC message size in bytes (default: 33554432 = 32 MB)

All Target Flags

Flag Required Description
--target.collection Yes Target collection name
--target.url No Target gRPC URL (default: http://localhost:6334)
--target.api-key No API key for the target instance
--target.ensure-payload-indexes No Recreate payload indexes from source (default: true)

Parallel Worker Option

Flag Default Description
--migration.num-workers Number of CPU cores Number of parallel workers for migration

Gotchas

  • Source and target must differ: You cannot migrate a collection to itself.
  • Parallel workers and resume: Migration progress is tracked per worker. If you change --migration.num-workers between runs, the saved offsets are invalidated and the migration restarts from scratch. Use --migration.restart explicitly if you intentionally want to change the worker count.
  • Large messages: If you encounter gRPC message size errors, increase --source.max-message-size.
  • Existing target collection: If the target collection already exists, the tool uses it as-is without modifying the schema.

Next Steps

After migration, verify your data arrived correctly with the Migration Verification Guide.