Migrate from Apache Solr to Qdrant

What You Need from Solr

  • Solr URL — the base URL of your Solr instance (e.g., http://localhost:8983)
  • Collection name — the Solr collection to migrate
  • Authentication — username and password, if configured

Concept Mapping

SolrQdrantNotes
CollectionCollectionOne-to-one mapping
DocumentPointEach document becomes a point
Dense vector fieldVectorNamed vectors are preserved
Non-vector fieldsPayloadDirect mapping
Document ID (id field)Payload fieldStored via --qdrant.id-field

Run the Migration

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

With Authentication

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration solr \
    --solr.url 'https://your-solr-host:8983' \
    --solr.collection 'your-collection' \
    --solr.username 'your-username' \
    --solr.password 'your-password' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection' \
    --migration.create-collection false

All Solr-Specific Flags

FlagRequiredDescription
--solr.urlYesSolr base URL (e.g., http://localhost:8983)
--solr.collectionYesSolr collection name
--solr.usernameNoUsername for basic authentication
--solr.passwordNoPassword for basic authentication
--solr.insecure-skip-verifyNoSkip TLS certificate verification (default: false)

Qdrant-Side Options

FlagDefaultDescription
--qdrant.id-field__id__Payload field name for original Solr document IDs

Gotchas

  • Named vectors: If your Solr schema has multiple dense vector fields, all are migrated as named vectors. Ensure your pre-created collection has matching named vector configurations.
  • ID mapping: Solr document IDs (strings) are converted to Qdrant UUIDs. The original Solr ID is stored in payload under --qdrant.id-field.

Next Steps

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

Was this page useful?

Thank you for your feedback! 🙏

We are sorry to hear that. 😔 You can edit this page on GitHub, or create a GitHub issue.