meilisearch/MeiliSearch
 Watch   
 Star   
 Fork   
2 days ago
MeiliSearch

v1.15.2 🦘

This patch release introduces a major fix and some minor fixes.

Major fix: searchable attributes database bug

Some searchable fields were removed from the searchable databases when the were removed from the filterableAttributessetting. This made them unsearchable despite the fact they were still precised in the searchableAttributes setting. This will no more append in versions >=1.15.2.

Fixed by @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/5660

Minor fixes

3 days ago
MeiliSearch

v1.15.1 🦘

Meilisearch v1.15.1 adds new experimental conversational features and enables LLM-driven chat features.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

Chat with your indexes

After enabling the experimental chat feature, you can create a chat workspace with the appropriate settings. We have a guide on how to set up a good chat interface for your indexes.

curl -X POST 'http://localhost:7700/chats/my-assistant/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "source": "OpenAi",
    "apiKey": "sk-abc..."
  }'

Then by using the official OpenAI SDK you'll be able to chat with your indexes.

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://localhost:7700/chats/my-assistant',
  apiKey: 'YOUR_MEILISEARCH_CHAT_API_KEY',
});

const completion = await client.chat.completions.create({
  model: 'gpt-3.5-turbo',
  messages: [{ role: 'user', content: 'What is Meilisearch?' }],
  stream: true,
});

for await (const chunk of completion) {
  console.log(chunk.choices[0]?.delta?.content || '');
}

Done by @Kerollmops in #5556.

6 days ago
MeiliSearch

v1.15.0 🦘

Meilisearch v1.15 adds a new typo tolerance setting, allowing you to disable typo tolerance for numbers. It also enables comparison operators for string filters.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment takes 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Please look over the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and updates 🔥

Disable typo tolerance for numbers

Set typoTolerance.disableOnNumbers to true to disable typo tolerance for numbers:

curl -X POST 'http://localhost:7700/indexes/movies/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "typoTolerance": {"disableOnNumbers": true}
  }'

Deactivating the typo tolerance on numbers can be helpful when trying to reduce false positives, such as a query term 2024 returning results that include 2025 and 2004. It may also improve indexing performance.

Done by @ManyTheFish in #5494.

Lexicographic string filters

This release allows you to filter strings lexicographically by enabling comparison operators (<, <=, >, >=, TO) on string values:

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "filter": "release_date >= '2024-06'"
  }'

This new feature can be particularly useful when filtering human-readable dates.

Done by @dureuill in #5535.

Other improvements

  • Allows cancelling an upgrade to a new Meilisearch version by rolling back all upgraded indexes by @dureuill in #5523
  • Support EC private key as SSL certificate by @HDT3213 in #5471
  • When passing the relevant CLI option, stop compacting snapshots, to speed up their generation by @dureuill and @irevoire in #5498 and #5560
  • Add new batchStrategy field in the batches stats by @dureuill in #5488, #5530, and #5588
  • Add log field tracking time spent searching in the vector store by @Kerollmops in #5525
  • Improve filterable error messages by @CodeMan62 in #5425
  • Improve error messages on embeddings dimension mismatch by @vuthanhtung2412 in #5449
  • Update /network URL validation error message format by @CodeMan62 in #5486
  • Expose the task queue's status size in the Prometheus metrics by @DanasFi in #5512

Fixes 🐞

  • Fix _matchesPosition length calculation to improve client-side cropping by @shaokeyibb in #5446
  • Fix _geo ranking rule by @HDT3213 in #5487
  • Fix a panic in the search that could happen when looking for typos with a search prefix having more than 65k possible hits in the DB by @dureuill in #5564
  • Make sure that passing MEILI_EXPERIMENTAL_MAX_NUMBER_OF_BATCHED_TASKS to 0 results in Meilisearch never processing any kind of task. By @irevoire in #5565
  • Forbid value 0 for maxTotalHits in the index settings by @irevoire in #5566
  • No longer reject documentTemplates that use array filters on documents (e.g. join) by @dureuill in #5593

Misc

  • Dependency updates
    • Update Rust to 1.85.1 by @Kerollmops in #5480
    • Update charabia v0.9.3 by @ManyTheFish in #5466
    • Update the Prometheus to fix a security vulnerability by @Kerollmops in #5513
  • CIs and tests
    • Setup the Milestone CI to update the Ruleset by @Kerollmops in #5444
    • Make the CI work with GitHub's merge queue grouping by @Kerollmops in #5445
    • Remove Bors references from the repository by @Kerollmops in #5447
    • Split unit tests for tasks by @shu-kitamura in #5424
  • Misc
    • Improve dumpless upgrade compatibility by @irevoire in #5395
    • Fix links and formatting in README for clarity and consistency by @ZeroZ-lab in #5533

❤️ Thanks again to our external contributors:

  • Meilisearch: @shu-kitamura, @shaokeyibb, @CodeMan62, @vuthanhtung2412, @HDT3213, @DanasFi, and @ZeroZ-lab.
  • Charabia: @luflow, @mosuka, and @HDT3213.
  • RoaringBitmap: @lucascool12 and @Dr-Emann.
12 days ago
MeiliSearch

v1.15.0-rc.4 🦘

[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.15.0-rc.3...v1.15.0-rc.4

23 days ago
MeiliSearch

v1.15.0-rc.3 🦘

[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.15.0-rc.2...v1.15.0-rc.3

27 days ago
MeiliSearch

v1.15.0-rc.2 🦘

[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

This release fixes a docker deployment issue (by @dureuill in https://github.com/meilisearch/meilisearch/pull/5577) but is otherwise identical to RC 1

2025-05-15 23:01:22
MeiliSearch

v1.15.0-rc.1 🦘

[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

🦋 Fixes

⚙️ Misc

2025-05-12 21:36:13
MeiliSearch

v1.15.0-rc.0 🦘

v1.15.0 release changelogs

[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

Meilisearch v1.15 adds a new typo tolerance setting, allowing you to disable typo tolerance for numbers. It also enables comparison operators for string filters.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and updates 🔥

Disable typo tolerance for numbers

Set typoTolerance.disableOnNumbers to true to disable typo tolerance for numbers:

curl -X POST 'http://localhost:7700/indexes/movies/settings' \
  -H 'Content-Type: application/json' \
  -d '{
    "typoTolerance": {"disableOnNumbers": true}
  }'

Deactivating the typo tolerance on numbers can be useful when trying to reduce false positives, such as a query term 2024 returning results that include 2025 and 2004. It may also improve indexing performance.

Done by @ManyTheFish in #5494.

Lexicographic string filters

This release allows you to filter strings lexicographically by enabling comparison operators (<, <=, >, >=, TO) on string values:

curl -X POST 'http://localhost:7700/indexes/movies/search' \
  -H 'Content-Type: application/json' \
  -d '{
    "filter": "release_date >= '2024-06'"
  }'

This new feature can be particularly useful when filtering human-readable dates.

Done by @dureuill in #5535.

Other improvements

  • Allows cancelling an upgrade to a new Meilisearch version by rolling back all upgraded indexes by @dureuill in #5523
  • Support EC private key as SSL certificate by @HDT3213 in #5471
  • Stop compacting snapshots to speed up their generation by @dureuill in #5498
  • Add new batchCreationComplete field in the batches stats by @dureuill in #5488 and #5530
  • Add log field tracking time spent searching in the vector store by @Kerollmops in #5525
  • Improve filterable error messages by @CodeMan62 in #5425
  • Improve error messages on embeddings dimension mismatch by @vuthanhtung2412 in #5449
  • Update /network URL validation error message format by @CodeMan62 in #5486
  • Expose the task queue's status size in the Prometheus metrics by @DanasFi in #5512

Fixes 🐞

  • Fix _matchesPosition length calculation to improve client-side cropping by @shaokeyibb in #5446
  • Fix _geo ranking rule by @HDT3213 in #5487

Misc

  • Dependencies updates
    • Update Rust to 1.85.1 by @Kerollmops in #5480
    • Update charabia v0.9.3 by @ManyTheFish in #5466
    • Update the Prometheus to fix a security vulnerability by @Kerollmops in #5513
  • CIs and tests
    • Setup the Milestone CI to update the Ruleset by @Kerollmops in #5444
    • Make the CI work with GitHub's merge queue grouping by @Kerollmops in #5445
    • Remove Bors references from the repository by @Kerollmops in #5447
    • Split unit tests for tasks by @shu-kitamura in #5424
  • Misc
    • Improve dumpless upgrade compatibility by @irevoire in #5395
    • Fix links and formatting in README for clarity and consistency by @ZeroZ-lab in #5533

❤️ Thanks again to our external contributors:

  • Meilisearch: @shu-kitamura, @shaokeyibb, @CodeMan62, @vuthanhtung2412, @HDT3213, @DanasFi, and @ZeroZ-lab.
2025-04-03 23:46:46
MeiliSearch

v1.14.0 🦫

Meilisearch v1.14 gives more granular control over which parts of filters you can disable for indexing performance optimization. This release also includes composite embedders, which can improve embedding generation during search and indexing, and a new route to retrieve multiple documents by their IDs.

🧰 All official Meilisearch integrations (including SDKs, clients, and other tools) are compatible with this Meilisearch release. Integration deployment happens between 4 to 48 hours after a new version becomes available.

Some SDKs might not include all new features. Consult the project repository for detailed information. Is a feature you need missing from your chosen SDK? Create an issue letting us know you need it, or, for open-source karma points, open a PR implementing it (we'll love you for that ❤️).

New features and updates 🔥

Granular filterable attribute settings

v1.14 gives you more control over which types of filter you want to disable in your searches. This allows you to further optimize indexing speeds by letting you activate only the filter features you need.

Use PATCH /indexes/INDEX_NAME/settings to specify which filters you want to enable for each attribute in your documents:

{
	"filterableAttributes": [
	  {
	    "attributePatterns": ["genre", "artist"],
	    "features": {
	      "facetSearch": true,
	      "filter": {
	        "equality": true,
	        "comparison": false
	      }
	    }
	  },
	  {
	    "attributePatterns": ["rank"],
	    "features": {
	      "facetSearch": false,
	      "filter": {
	        "equality": true,
	        "comparison": true
	      }
	    }
	  }
	]
}

For more details about this feature, please refer to its public usage page

Done by @ManyTheFish in #5254.

Composite embedders

This feature allows using different embedders at search and indexing time. This can be useful when optimizing AI-powered search performance. For example, you may prefer to use:

  • A remote embedder during indexing, as remote embedders have higher bandwidth and can generate more embeddings per second
  • A local embedder when answering to search queries, as local embedders have lower latency and can respond more quickly to user input

To use the feature, follow these steps:

  1. Enable the Composite embedders feature with the Meilisearch Cloud interface, or with the /experimental-features route:
curl MEILISEARCH_URL/experimental-features \
  -H 'Content-Type: application/json'  \
  -d '{"compositeEmbedders": true}'
  1. Next, create an embedder, setting its source to "composite" and defining one searchEmbedder and one indexingEmbedder:
{
  "embedders": {
    "text": {
      "source": "composite",
      "searchEmbedder": {
        "source": "huggingFace",
        "model": "baai/bge-base-en-v1.5",
        "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a"
      },
      "indexingEmbedder": {
        "source": "rest",
        "url": "https://URL.endpoints.huggingface.cloud",
        "apiKey": "hf_XXXXXXX",
        "documentTemplate": "Your {{doc.template}}",
        "request": {
          "inputs": [
            "{{text}}",
            "{{..}}"
          ]
        },
        "response": [
          "{{embedding}}",
          "{{..}}"
        ]
      }
    }
  }
}
  1. Once the composite embedder has been created, Meilisearch will use its indexingEmbedder during indexing and searchEmbedder when responding to user queries

For more details about this feature, please refer to its public usage page.

Done by @dureuill in #5371 and #5401.

Retrieve multiple documents by ID

It is now possible to retrieve multiple documents by their IDs:

curl -H 'Content-Type: application/json' MEILISEARCH_URL/indexes/INDEX_UID/documents -d '{ "ids": ["cody", "finn", "brandy", "gambit"] }'
{
  "results": [
    {
      "id": "brandy",
      "info": 13765493
    },
    {
      "id": "finn",
      "info": 35863
    },
    {
      "id": "cody",
      "info": 122263
    },
    {
      "id": "gambit",
      "info": 22222
    }
  ],
  "offset": 0,
  "limit": 20,
  "total": 4
}

[!WARNING] Documents are not returned in the queried order. Non-existent documents are ignored.

Done by @dureuill in #5384.

Other improvements

Fixes

Misc

⚠️ Please consider that the batches stats content can change anytime.

❤️ Thanks again to our external contributors:

2025-04-03 23:46:46
MeiliSearch

v1.14.0-rc.3

[!WARNING] Since this is a release candidate (RC), we do NOT recommend using it in a production environment. Is something not working as expected? We welcome bug reports and feedback about new features.

What's Changed

Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.14.0-rc.2...v1.14.0-rc.3