Documentation Index Fetch the complete documentation index at: https://www.meilisearch.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
The official meilisearch-importer is a high-performance CLI tool for bulk importing large datasets into Meilisearch. It handles millions of documents with automatic retry logic and progress tracking.
Features
Import CSV, NDJSON, and JSON (array of objects) files
Handle datasets from thousands to 40+ million documents
Automatic retry logic for failed batches
Real-time progress tracking with ETA
Configurable batch sizes for performance tuning
Prerequisites
A Meilisearch instance (Cloud or self-hosted )
One of:
Rust/Cargo installed (for building from source)
Pre-built binary from releases
Installation
Cargo (Rust)
Pre-built binary
cargo install meilisearch-importer
Download the latest release from GitHub Releases for your platform. # Example for Linux
wget https://github.com/meilisearch/meilisearch-importer/releases/latest/download/meilisearch-importer-linux-amd64
chmod +x meilisearch-importer-linux-amd64
mv meilisearch-importer-linux-amd64 /usr/local/bin/meilisearch-importer
Basic usage
Import a CSV file:
meilisearch-importer \
--url "${ MEILISEARCH_URL }" \
--api-key "${ MEILISEARCH_KEY }" \
--index movies \
--file movies.csv
Set your environment variables: export MEILISEARCH_URL = "https://your-instance.meilisearch.io"
export MEILISEARCH_KEY = "your_api_key"
CSV
meilisearch-importer --index products --file products.csv
CSV files must have a header row. The importer automatically detects column types.
NDJSON (Newline-delimited JSON)
meilisearch-importer --index products --file products.ndjson
Each line must be a valid JSON object:
{ "id" : 1 , "title" : "Product A" , "price" : 29.99 }
{ "id" : 2 , "title" : "Product B" , "price" : 39.99 }
JSON array
meilisearch-importer --index products --file products.json
File must contain an array of objects:
[
{ "id" : 1 , "title" : "Product A" , "price" : 29.99 },
{ "id" : 2 , "title" : "Product B" , "price" : 39.99 }
]
Configuration options
Option Description Default --urlMeilisearch URL http://localhost:7700--api-keyMeilisearch API key None --indexTarget index name Required --fileInput file path Required --batch-sizeDocuments per batch 1000--primary-keyPrimary key field Auto-detected
Batch size
Adjust batch size based on your document size and network:
# Smaller documents: larger batches
meilisearch-importer --index logs --file logs.ndjson --batch-size 5000
# Larger documents: smaller batches
meilisearch-importer --index articles --file articles.json --batch-size 100
Primary key
Specify the primary key if auto-detection fails:
meilisearch-importer --index products --file products.csv --primary-key product_id
Example: Import a large dataset
Import 10 million products with progress tracking:
meilisearch-importer \
--url "https://ms-xxx.meilisearch.io" \
--api-key "your_master_key" \
--index products \
--file products.ndjson \
--batch-size 2000
Output:
Importing products.ndjson to index 'products'...
[████████████████████░░░░░░░░░░░░░░░░░░░░] 52% (5.2M/10M) ETA: 12m 34s
After import
Verify your import:
curl "${ MEILISEARCH_URL }/indexes/products/stats" \
-H "Authorization: Bearer ${ MEILISEARCH_KEY }"
Test a search:
curl "${ MEILISEARCH_URL }/indexes/products/search" \
-H "Authorization: Bearer ${ MEILISEARCH_KEY }" \
-d '{"q": "test"}'
Next steps
Configure settings Set up searchable and filterable attributes
Debug performance Identify and fix indexing bottlenecks
Resources