Follow Install the Migration CLI to install stable
v0.1.8 using Homebrew or the standalone installer. Check lambdadb-migration --version and lambdadb-migration elasticsearch --help before continuing._source. If you use aliases, data streams, or wildcard patterns that resolve to multiple backing indexes, run one migration per concrete index or prepare a custom consolidation plan.
Elasticsearch stores records as JSON documents inside indexes. Search behavior is controlled by mappings, analyzers, dense vector fields, query DSL, ingest pipelines, aliases, and cluster-level settings. LambdaDB stores each migrated record as a document and indexes only the fields declared in the collection’s indexConfigs.
What the CLI supports
What still needs review
Review these features before cutover because the CLI migrates data and generated LambdaDB index configs, not Elasticsearch runtime behavior:- Elasticsearch Query DSL, aggregations, scripts, runtime fields, scoring scripts, and rescoring logic
- custom analyzers, token filters, synonyms, normalizers, and language-specific index settings
- nested query semantics, parent-child relationships, join fields, and field collapsing
- index templates, aliases, data streams, ILM policies, and ingest pipelines
semantic_text, ELSER, model inference pipelines, and other Elasticsearch-managed semantic features_sourceexclusions, disabled_source, synthetic_sourcedifferences, and stored-field-only designs- application code that expects Elasticsearch response shapes, shard metadata, highlights, or aggregations
queryString, knn, sparseVector, bool, or hybrid queries. Then review the generated LambdaDB mapping around those queries instead of copying every Elasticsearch mapping field mechanically.
Step 1: Set credentials
LambdaDB Cloud uses region-specific API base URLs. Use your project’s base URL and project name, together with a project API key created in its API Keys tab. Project creation does not automatically issue a key; save the full value when you create it, because it is shown only once. See API key management. Do not assume a global default URL or a fixed project name.
--elasticsearch.username and --elasticsearch.password. Inventory requires read access to both /_mapping and /_settings; unreadable settings fail inventory instead of silently assuming standard.
Step 2: Generate inventory and mapping
Run the inventory command against the Elasticsearch endpoint and index:nested fields that need query rewrite review, and PIT checkpoint expiry.
Step 3: Review the mapping
Review the generated mapping before migration:- confirm the target LambdaDB collection name
- remove payload index configs for fields you only need to store
- check generated renames for dotted fields such as
metadata.source - confirm
dense_vectordimensions and similarity - choose LambdaDB text analyzers when your Elasticsearch workload depends on language-specific analysis; review their matching behavior rather than assuming equivalent Elasticsearch configuration
- confirm
dateanddate_nanosvalues in_sourceare compatible with LambdaDBdatetimefields, or edit the mapping before creating the collection - add explicit field decisions for Elasticsearch multi-fields such as
title.keywordif your application depends on exact-match behavior
The CLI maps Elasticsearch
l2_norm vector similarity to LambdaDB euclidean. Elasticsearch cosine, dot_product, and max_inner_product map directly.Text analyzer presets
For a source analyzer whose built-in name and default settings match a LambdaDB preset, explicitly set that name on the targettext field. For example, the english default preset can be selected in the editable mapping:
type. Without a configured default, it leaves analyzers omitted so the target uses ["standard"]; an explicit source analyzer: default also resolves to standard.
Custom or unsupported source settings produce warnings and unsupported:<source-name> markers. These generated mappings fail validation until you choose an explicit supported target preset. Field search_analyzer, search_quote_analyzer, and index default_search settings are reported but not translated. Review warnings during inventory, migration, and dry-run before accepting matching behavior.
Manual mappings preserve names exactly, including case, order, duplicates, and explicit empty arrays. Omitted/null analyzers uses the server default; [] remains empty. Use supported lowercase names and let validation report invalid names rather than relying on silent normalization or deduplication.
LambdaDB exposes fixed presets, not Elasticsearch analyzer configuration objects. Do not silently discard source options such as custom stopwords, patterns, token filters, synonyms, or normalizers and treat the result as equivalent. Resolve unsupported settings explicitly before migration, then compare representative search results. The keyword analyzer is a preset for a text field, distinct from a keyword field type. nepali, tamil, and telugu are Lucene extensions, not common Elasticsearch/OpenSearch analyzer names.
Step 4: Run a dry run
Run a dry run to validate the source inventory and mapping without writing documents:Step 5: Run the migration
Run the migration with validation enabled:search_after, and sorts by _shard_doc. It stores the latest PIT ID and search_after values in the local checkpoint.
For large indexes or slow write targets, increase the PIT keep-alive window:
Step 6: Validate results
Validation compares the accepted record count against the Elasticsearch inventory count, fetches sampled migrated documents from LambdaDB with strongly consistent reads, and compares sampled fields. Use a validation report for review:JSON
JSON
Step 7: Cut over safely
Run the LambdaDB path in parallel before replacing production Elasticsearch traffic:- Backfill historical documents.
- Replay writes that happened during the backfill window.
- Dual-write new updates to Elasticsearch and LambdaDB for a short verification period.
- Compare representative query results and latency.
- Switch read traffic to LambdaDB.
- Keep Elasticsearch available until rollback is no longer needed.
Elasticsearch references
Related docs
Migration CLI
Learn the shared migration workflow, validation behavior, and checkpoint behavior.
Create a collection
Define the LambdaDB index configuration for migrated fields.
Query string search
Rewrite Elasticsearch lexical queries to LambdaDB query string syntax.
Hybrid query
Combine lexical and vector search after migration.