Reference

Meilisearch index settings: the ones that actually matter

by the AdminDex team 8 min read

Meilisearch exposes 13 settings per index. Most teams only need to touch four of them: searchableAttributes, filterableAttributes, rankingRules, and synonyms. Everything else has sensible defaults that work out of the box.

The 30-second answer

  1. searchableAttributes — which fields are searchable, and in what priority order. Almost always worth setting explicitly.
  2. filterableAttributes — which fields can be filtered or used as facets. Required if you want a filter UI.
  3. rankingRules — the relevance pipeline. Default works for ~80% of cases; reorder for the other 20%.
  4. synonyms — word equivalence. Almost every search benefits from at least a few entries.

The four that matter

1. searchableAttributes

Default: ["*"] — every field is searchable, all weighted equally. This is rarely what you want.

Set it explicitly to put your most important fields first:

PATCH /indexes/products/settings/searchable-attributes
[
  "title",
  "brand",
  "description",
  "tags"
]

Documents matching in title rank above documents matching only in description (because of the attribute ranking rule). For e-commerce, this is usually the difference between "this works" and "this is unusable".

2. filterableAttributes

Default: [] — nothing is filterable. You must opt in.

PATCH /indexes/products/settings/filterable-attributes
[
  "category",
  "brand",
  "price",
  "in_stock"
]

Required for any filter UI or facet count. See our facets and filters guide for the full story.

3. rankingRules

Default: ["words", "typo", "proximity", "attribute", "sort", "exactness"]. Reorder when you have a specific relevance priority that the default doesn't capture (recency for news, distance for geo, price for e-commerce). See our ranking rules guide.

4. synonyms

Default: {} — no synonyms. Almost every search benefits from at least a few entries (brand variations, abbreviations, plurals). See our synonyms and stop words guide.

The nine you can usually leave alone

5. sortableAttributes

Default: []. Set it if you want to sort by a numeric attribute at query time (price, date, rating). Required for the sort ranking rule and the per-query sort parameter to work.

6. stopWords

Default: []. Add common filler words ("the", "and", "of") if they're hurting relevance for your content. Often optional. See the synonyms and stop words guide.

7. distinctAttribute

Default: null. Set this if you have duplicate-content documents (e.g. multiple variants of the same product) and you want to deduplicate by a specific field at query time. Most teams don't need it.

8. typoTolerance

Default: { enabled: true, minWordSizeForTypos: { oneTypo: 5, twoTypos: 9 } }. The defaults are tuned for English. Adjust for shorter-word languages or to disable on specific attributes (SKUs, IDs, codes). See the typo tolerance guide.

9. faceting

Default: { maxValuesPerFacet: 100 }. Cap on how many distinct values are returned per facet. Increase if you have an attribute with thousands of legitimate distinct values.

10. pagination

Default: { maxTotalHits: 1000 }. Cap on the total number of hits Meilisearch will return for a query. Raising this is rarely useful — users don't paginate past page 5 in practice.

11. searchCutoffMs

Default: null (no cutoff). Set a cutoff in milliseconds if you want Meilisearch to return partial results when a query is taking too long. Trades completeness for predictable latency. Useful for high-traffic production search.

12. proximityPrecision

Default: "byWord". Controls the granularity of the proximity ranking rule. Switching to "byAttribute" trades precision for indexing speed and disk space. Most teams should leave this alone.

13. localizedAttributes

Default: null. Enables per-language tokenization for attributes containing non-Latin script. Set this for multilingual content; leave it alone for single-language sites.

The recommended starter config

For 90% of e-commerce / SaaS / content sites, this is enough:

PATCH /indexes/products/settings
{
  "searchableAttributes": ["title", "brand", "description"],
  "filterableAttributes": ["category", "brand", "price", "in_stock"],
  "sortableAttributes": ["price", "rating", "created_at"],
  "synonyms": {
    "tv": ["television"],
    "iphone": ["apple phone"]
  }
}

Everything else stays at defaults. Fine-tune rankingRules and typoTolerance only when you can point at a specific business goal that the defaults don't meet.

Settings that trigger reindexing

Most settings changes trigger a full reindex. The big ones:

  • searchableAttributes
  • filterableAttributes
  • sortableAttributes
  • distinctAttribute
  • stopWords
  • typoTolerance
  • proximityPrecision

Reindexing takes seconds on small indexes and minutes on large ones. You'll see the work in the task viewer. Plan settings changes with this in mind.

FAQ

How do I see all my current settings?

GET /indexes/{uid}/settings returns the full settings object. Meilisearch returns the resolved values, including defaults.

How do I reset a setting to its default?

Send null for the field in a PATCH, or DELETE the per-setting endpoint (e.g. DELETE /indexes/{uid}/settings/synonyms).

Can I copy settings from one index to another?

Yes — GET the settings from the source, then PATCH them to the destination. Both endpoints accept the same JSON shape.

Is there a UI for editing all 13 settings?

Yes — AdminDex's settings editor has every setting in one accordion-based UI with inline help drawers explaining what each one does. No JSON editing required for any of them.

Stop running Meilisearch from a terminal.

AdminDex gives you a visual dashboard for every Meilisearch instance you own — settings, API keys, tasks, and search analytics.

Connect your first instance

Related reading