5356: Display the internal indexing steps with timings on the `/batches` route r=irevoire a=Kerollmops This PR computes the durations of each step, stores them in a map, and prints them (for now). ``` "callTrace": { "processing tasks > retrieving config": "185.38µs", "processing tasks > computing document changes > preparing update file > payload": "23.11ms", "processing tasks > computing document changes > preparing update file": "23.26ms", "processing tasks > computing document changes": "24.06ms", "processing tasks > indexing > extracting documents > document": "15.13ms", "processing tasks > indexing > extracting documents": "15.13ms", "processing tasks > indexing > extracting facets > document": "5.70ms", "processing tasks > indexing > extracting facets": "5.72ms", "processing tasks > indexing > extracting words > document": "597.24ms", "processing tasks > indexing > extracting words": "597.25ms", "processing tasks > indexing > extracting word proximity > document": "1.14s", "processing tasks > indexing > extracting word proximity": "1.15s", "processing tasks > indexing > tail writing to database": "430.91ms", "processing tasks > indexing > waiting for extractors": "52.54µs", "processing tasks > indexing > writing embeddings to database": "47.79µs", "processing tasks > indexing > post-processing facets": "476.04µs", "processing tasks > indexing > post-processing words": "97.82ms", "processing tasks > indexing > finalizing": "67.41ms", "processing tasks > indexing": "2.40s", "processing tasks": "2.43s", "writing tasks to disk > task": "37.71µs", "writing tasks to disk": "67.13µs" }, "writeChannelCongestion": { "attempts": 2608482, "blocking_attempts": 0, "blocking_ratio": 0.0 } ``` ## To Do - [x] Update the batches PRD + delivery + tracking issue. - [x] Store that in the batches to be visible from the `/batches` route. - [x] Display the writer's congestion. - [x] Display the info back in the logs too. - [ ] (optional) Compute the size of each database by [using LMDB](https://docs.rs/heed/latest/heed/struct.DatabaseStat.html). - [x] Push them in reverse order so that "processing task" is after the other sub-steps. Co-authored-by: Kerollmops <clement@meilisearch.com>
Website | Roadmap | Meilisearch Cloud | Blog | Documentation | FAQ | Discord
⚡ 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.
🖥 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
- AI-ready: works out of the box with langchain and the model context protocol
- 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.
⚙️ 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:
- For feature requests, please visit our product repository
- Found a bug? Open an issue!
- Want to be part of our Discord community? Join 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.