A lightning-fast search API that fits effortlessly into your apps, websites, and workflow
Go to file
meili-bors[bot] d4d8becfa7
Some checks failed
Indexing bench (push) / Run and upload benchmarks (push) Waiting to run
Benchmarks of indexing (push) / Run and upload benchmarks (push) Waiting to run
Benchmarks of search for geo (push) / Run and upload benchmarks (push) Waiting to run
Benchmarks of search for songs (push) / Run and upload benchmarks (push) Waiting to run
Benchmarks of search for Wikipedia articles (push) / Run and upload benchmarks (push) Waiting to run
Publish binaries to GitHub release / Check the version validity (push) Successful in 11s
Publish binaries to GitHub release / Publish binary for ${{ matrix.os }} (meilisearch, meilisearch-macos-amd64, macos-13) (push) Waiting to run
Publish binaries to GitHub release / Publish binary for macOS silicon (meilisearch-macos-apple-silicon, aarch64-apple-darwin) (push) Waiting to run
Publish binaries to GitHub release / Publish binary for ${{ matrix.os }} (meilisearch.exe, meilisearch-windows-amd64.exe, windows-2022) (push) Failing after 21s
Publish binaries to GitHub release / Publish binary for Linux (push) Failing after 12s
Publish binaries to GitHub release / Publish binary for aarch64 (meilisearch-linux-aarch64, aarch64-unknown-linux-gnu) (push) Failing after 10s
Run the indexing fuzzer / Setup the action (push) Successful in 1h5m1s
Test suite / Tests on ubuntu-20.04 (push) Failing after 12s
Test suite / Tests on ${{ matrix.os }} (macos-13) (push) Waiting to run
Test suite / Tests almost all features (push) Failing after 9s
Test suite / Test disabled tokenization (push) Failing after 8s
Test suite / Run tests in debug (push) Failing after 10s
Test suite / Tests on ${{ matrix.os }} (windows-2022) (push) Failing after 40s
Test suite / Run Rustfmt (push) Successful in 1m28s
Test suite / Run Clippy (push) Successful in 5m29s
Merge #5060
5060: Batch route r=Kerollmops a=irevoire

# Pull Request

See [usage](https://www.notion.so/meilisearch/Enhance-visibility-on-batched-tasks-1194b06b651f810b8fe0fab5d72846a8).

## Related issue
Fixes https://github.com/meilisearch/meilisearch/issues/4977

## What does this PR do?
- For more detailed information, see the PRD.
- Added a `batchUid` to the tasks (that's the cause of all the updates of the dumps):
  - For all enqueued tasks, it's set to `None`
  - For every other tasks it must be set to something
  - ⚠️ For all the tasks imported in a dump, the `batchUid` will be set to `None` as well.
- Add two new routes:
  - `GET /batches/:uid` - to query a batch by its id
  - `GET /batches` - to retrieve a list of batches. It accepts all the same query parameters that are available on the `GET /tasks` route
- Adds new databases to query the batches directly:
  - When doing a query against the batches, the rule of thumb is that we want to return a batch iif **at least one** task in it matches the provided filter.
  - We don't need a `canceledBy` batch specific database because we can just retrieve the task and if it's a `taskCancelation` retrieve its `batchUid`
- The task cancelation has been updated and simplified a bit:
  - Instead of updating the matching tasks on disk while processing the cancelation task, we instead retrieve the task and let the `tick` function do the work afterward.
  - In the `tick` function, we now have to take care of not missing any tasks
- All the tests applied to the tasks were duplicated and updated to works with the new batches routes
- The deletion of batches doesn't contain any tests because it's already tested in the deletion of tasks (and especially highlighted in the snapshots)


Currently, one part of the PRD is not implemented: it's the progress.

Co-authored-by: Tamo <tamo@meilisearch.com>
2024-11-20 14:07:48 +00:00
.cargo Compile xtask in --release 2024-03-05 10:11:43 +01:00
.github Fix the path used in the flaky tests CI 2024-11-13 09:52:10 +01:00
assets Revert "Change the Meilisearch logo to the kawaii version" 2024-10-21 08:21:56 +02:00
crates apply review changes 2024-11-20 14:40:36 +01:00
workloads Fix bench by adding embedder 2024-09-24 09:56:47 +02:00
.dockerignore Revert "Improve docker cache" 2023-05-25 11:48:26 +02:00
.gitignore Move crates under a sub folder to clean up the code 2024-10-21 08:18:43 +02:00
.rustfmt.toml Introduce a rustfmt file 2022-10-27 11:35:05 +02:00
BENCHMARKS.md Update documentation in BENCHMARKS.md 2024-07-02 16:13:54 +02:00
bors.toml update the macos version 2024-11-04 16:33:04 +01:00
Cargo.lock use a tag while importing arroy instead of a loose branch or rev 2024-11-05 15:24:02 +01:00
Cargo.toml Move crates under a sub folder to clean up the code 2024-10-21 08:18:43 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2020-04-30 20:16:02 +02:00
config.toml Add the default commented experimental batched tasks limit parameter to the config file 2023-12-12 10:59:00 +01:00
CONTRIBUTING.md Allow MEILI_NO_VERGEN env var to skip vergen 2024-07-18 17:28:01 +02:00
Cross.toml Cross build with action-rs 2021-10-10 02:21:30 +08:00
Dockerfile Apply suggestions from code review 2024-10-08 14:14:16 +02:00
download-latest.sh Updated messages pointing to the docs website 2023-04-28 20:52:03 +00:00
LICENSE Update LICENSE 2024-01-03 14:32:41 +01:00
PROFILING.md Update the PROFILING.md file 2023-10-13 13:11:30 +02:00
README.md Revert "Change the Meilisearch logo to the kawaii version" 2024-10-21 08:21:56 +02:00
rust-toolchain.toml update rust version 2024-07-09 23:41:29 +02:00
SECURITY.md docs(security): Fix Supported 2022-05-31 14:21:34 -05:00

Website | Roadmap | Meilisearch Cloud | Blog | Documentation | FAQ | Discord

Dependency status License Bors enabled

A lightning-fast search engine that fits effortlessly into your apps, websites, and workflow 🔍

Meilisearch helps you shape a delightful search experience in a snap, offering features that work out of the box to speed up your workflow.

A bright colored application for finding movies screening near the user A dark colored application for finding movies screening near the user

🖥 Examples

  • Movies — An application to help you find streaming platforms to watch movies using hybrid search.
  • Ecommerce — Ecommerce website using disjunctive facets, range and rating filtering, and pagination.
  • Songs — Search through 47 million of songs.
  • SaaS — Search for contacts, deals, and companies in this multi-tenant CRM application.

See the list of all our example apps in our demos repository.

Features

  • Hybrid search: Combine the best of both semantic & full-text search to get the most relevant results
  • Search-as-you-type: Find & display results in less than 50 milliseconds to provide an intuitive experience
  • Typo tolerance: get relevant matches even when queries contain typos and misspellings
  • Filtering and faceted search: enhance your users' search experience with custom filters and build a faceted search interface in a few lines of code
  • Sorting: sort results based on price, date, or pretty much anything else your users need
  • Synonym support: configure synonyms to include more relevant content in your search results
  • Geosearch: filter and sort documents based on geographic data
  • Extensive language support: search datasets in any language, with optimized support for Chinese, Japanese, Hebrew, and languages using the Latin alphabet
  • Security management: control which users can access what data with API keys that allow fine-grained permissions handling
  • Multi-Tenancy: personalize search results for any number of application tenants
  • Highly Customizable: customize Meilisearch to your specific needs or use our out-of-the-box and hassle-free presets
  • RESTful API: integrate Meilisearch in your technical stack with our plugins and SDKs
  • Easy to install, deploy, and maintain

📖 Documentation

You can consult Meilisearch's documentation at meilisearch.com/docs.

🚀 Getting started

For basic instructions on how to set up Meilisearch, add documents to an index, and search for documents, take a look at our documentation guide.

🌍 Supercharge your Meilisearch experience

Say goodbye to server deployment and manual updates with Meilisearch Cloud. Additional features include analytics & monitoring in many regions around the world. No credit card is required.

🧰 SDKs & integration tools

Install one of our SDKs in your project for seamless integration between Meilisearch and your favorite language or framework!

Take a look at the complete Meilisearch integration list.

Logos belonging to different languages and frameworks supported by Meilisearch, including React, Ruby on Rails, Go, Rust, and PHP

⚙️ Advanced usage

Experienced users will want to keep our API Reference close at hand.

We also offer a wide range of dedicated guides to all Meilisearch features, such as filtering, sorting, geosearch, API keys, and tenant tokens.

Finally, for more in-depth information, refer to our articles explaining fundamental Meilisearch concepts such as documents and indexes.

📊 Telemetry

Meilisearch collects anonymized user data to help us improve our product. You can deactivate this whenever you want.

To request deletion of collected data, please write to us at privacy@meilisearch.com. Remember to include your Instance UID in the message, as this helps us quickly find and delete your data.

If you want to know more about the kind of data we collect and what we use it for, check the telemetry section of our documentation.

📫 Get in touch!

Meilisearch is a search engine created by Meili, a software development company headquartered in France and with team members all over the world. Want to know more about us? Check out our blog!

🗞 Subscribe to our newsletter if you don't want to miss any updates! We promise we won't clutter your mailbox: we only send one edition every two months.

💌 Want to make a suggestion or give feedback? Here are some of the channels where you can reach us:

Thank you for your support!

👩‍💻 Contributing

Meilisearch is, and will always be, open-source! If you want to contribute to the project, please look at our contribution guidelines.

📦 Versioning

Meilisearch releases and their associated binaries are available on the project's releases page.

The binaries are versioned following SemVer conventions. To know more, read our versioning policy.

Differently from the binaries, crates in this repository are not currently available on crates.io and do not follow SemVer conventions.