Skip to main content

How to Migrate from Algolia to Meilisearch

·OSSAlt Team
algoliameilisearchmigrationsearchguide
Share:

How to Migrate from Algolia to Meilisearch

Algolia's pricing is based on search requests and records. At scale, costs reach $1-10K+/month. Meilisearch is the open source alternative — typo-tolerant, fast, and free to self-host. The migration is straightforward because Meilisearch supports InstantSearch.

Step 1: Deploy Meilisearch

# Docker
docker run -d \
  --name meilisearch \
  -p 7700:7700 \
  -v meili_data:/meili_data \
  -e MEILI_MASTER_KEY=your-master-key \
  getmeili/meilisearch:latest

Step 2: Export from Algolia

// Export Algolia index to JSON
const algoliasearch = require('algoliasearch');
const fs = require('fs');

const client = algoliasearch('APP_ID', 'ADMIN_API_KEY');
const index = client.initIndex('products');

let allRecords = [];
await index.browseObjects({
  batch: (objects) => { allRecords = allRecords.concat(objects); }
});

fs.writeFileSync('products.json', JSON.stringify(allRecords));
console.log(`Exported ${allRecords.length} records`);

Step 3: Import to Meilisearch

const { MeiliSearch } = require('meilisearch');
const products = require('./products.json');

const client = new MeiliSearch({
  host: 'http://localhost:7700',
  apiKey: 'your-master-key',
});

// Create index and add documents
const index = client.index('products');
await index.addDocuments(products);

// Configure searchable attributes (like Algolia's settings)
await index.updateSearchableAttributes([
  'name', 'description', 'category', 'brand'
]);

// Configure filterable attributes (like Algolia's facets)
await index.updateFilterableAttributes([
  'category', 'brand', 'price', 'inStock'
]);

// Configure sortable attributes
await index.updateSortableAttributes(['price', 'rating']);

Step 4: Update Frontend (InstantSearch)

Meilisearch supports Algolia's InstantSearch via an adapter:

npm install @meilisearch/instant-meilisearch

Before (Algolia):

import algoliasearch from 'algoliasearch';
import instantsearch from 'instantsearch.js';

const searchClient = algoliasearch('APP_ID', 'SEARCH_KEY');

const search = instantsearch({
  indexName: 'products',
  searchClient,
});

After (Meilisearch):

import { instantMeiliSearch } from '@meilisearch/instant-meilisearch';
import instantsearch from 'instantsearch.js';

const { searchClient } = instantMeiliSearch(
  'http://localhost:7700',
  'your-search-key'
);

const search = instantsearch({
  indexName: 'products',
  searchClient,
});

That's it. Same InstantSearch widgets, same UI — just a different search client. All your existing hits, searchBox, refinementList, pagination widgets continue working.

Step 5: Configure Settings

Map Algolia settings to Meilisearch:

Algolia SettingMeilisearch Equivalent
searchableAttributessearchableAttributes
attributesForFacetingfilterableAttributes
customRankingrankingRules
synonymssynonyms
stopWordsstopWords
typoToleranceBuilt-in (configurable)
distinctdistinctAttribute
replicasNot needed (sort at query time)

Step 6: Update Backend API Calls

Before:

const index = algoliaClient.initIndex('products');
const results = await index.search('query', { filters: 'price < 100' });

After:

const index = meiliClient.index('products');
const results = await index.search('query', { filter: 'price < 100' });

The API is very similar — most changes are just import swaps.

Cost Comparison

RecordsAlgoliaMeilisearch Self-HostedSavings
10K$50/month$5/month (VPS)$540/year
100K$200/month$10/month$2,280/year
1M$500+/month$20/month$5,760/year

Migration Timeline

DayTask
Day 1Deploy Meilisearch, export + import data
Day 2Configure settings, swap frontend SDK
Day 3Update backend API calls, test search quality
Week 2Monitor search quality, fine-tune ranking
Week 3Cutover, cancel Algolia

Compare search engines on OSSAlt — performance, features, and pricing side by side.

See open source alternatives to Algolia on OSSAlt.

The SaaS-to-Self-Hosted Migration Guide (Free PDF)

Step-by-step: infrastructure setup, data migration, backups, and security for 15+ common SaaS replacements. Used by 300+ developers.

Join 300+ self-hosters. Unsubscribe in one click.