Migrate from OpenSearch to Qdrant

What You Need from OpenSearch

  • OpenSearch URL — the HTTP endpoint
  • Index name — the index containing your vectors
  • Credentials — username/password or API key

Concept Mapping

OpenSearchQdrantNotes
IndexCollectionOne-to-one mapping
DocumentPointEach document becomes a point
knn_vector fieldVectorMapped automatically
Document fieldsPayloadNon-vector fields become payload
cosinesimilCosineDirect mapping
l2EuclidDirect mapping
innerproductDotDirect mapping

Run the Migration

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration opensearch \
    --opensearch.url 'https://your-opensearch-host:9200' \
    --opensearch.index 'your-index' \
    --opensearch.username 'admin' \
    --opensearch.password 'your-password' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection'

Using API Key Authentication

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

All OpenSearch-Specific Flags

FlagRequiredDescription
--opensearch.urlYesOpenSearch HTTP endpoint
--opensearch.indexYesIndex to migrate
--opensearch.usernameNoUsername for basic auth
--opensearch.passwordNoPassword for basic auth
--opensearch.api-keyNoAPI key for authentication
--opensearch.insecure-skip-verifyNoSkip TLS certificate verification

Qdrant-Side Options

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

Gotchas

  • OpenSearch vs. Elasticsearch: OpenSearch is a fork of Elasticsearch, so many of the same considerations apply. However, the CLI subcommand is opensearch, not elasticsearch.
  • Score normalization: OpenSearch _score values are not directly comparable to Qdrant scores. Use rank-based metrics when verifying your migration.
  • Nested documents: OpenSearch nested documents need to be flattened or restructured for Qdrant’s payload model.

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.