v1.35.0
Meilisearch v1.35.0 contains improvements to the observability of the search performance, a breaking change to the recently introduced POST /indexes/<index_uid>/fields route, and other bugfixes and improvements.
🌈 Improvements
Observe the search performance
The search routes accept a new field named showPerformanceDetails. When set to true, the search response contains a performance trace, allowing the user to better
understand what takes time during a search query.
impacted routes:
POST /indexes/<index_uid>/searchGET /indexes/<index_uid>/searchPOST /multi-searchPOST /indexes/<index_uid>/similarGET /indexes/<index_uid>/similar
Search
routes: POST /indexes/<index_uid>/search and GET /indexes/<index_uid>/search
Request
new request parameters:
showPerformanceDetails:true/false(boolean)
example
{
"q": "glass",
"showPerformanceDetails": true
}
Response
new response field:
performanceDetails:{"<span>": "<human_duration>", .. }(map)
example
{
"hits": [
// hits ..
],
"query": "glass",
"processingTimeMs": 5,
"limit": 20,
"offset": 0,
"estimatedTotalHits": 1,
"requestUid": "<uuid>",
"performanceDetails": {
"wait for permit": "295.29µs",
"search > tokenize": "436.67µs",
"search > resolve universe": "649.00µs",
"search > keyword search": "515.71µs",
"search > format": "288.54µs",
"search": "3.56ms"
}
}
Multi-search
route: POST /multi-search
Request
new request parameters:
queries.showPerformanceDetails:true/false(boolean)
example
"queries": [
{
"indexUid": "<index_uid>",
"q": "glass",
"showPerformanceDetails": true
}
]
Response
new response field:
results.performanceDetails:{"<span>": "<human_duration>", .. }(map)
example
{
"results": [
{
"indexUid": "<index_uid>",
"hits": [
// hits ..
],
"query": "glass",
"processingTimeMs": 5,
"limit": 20,
"offset": 0,
"estimatedTotalHits": 1,
"requestUid": "<uuid>",
"performanceDetails": {
"wait for permit": "295.29µs",
"search > tokenize": "436.67µs",
"search > resolve universe": "649.00µs",
"search > keyword search": "515.71µs",
"search > format": "288.54µs",
"search": "3.56ms"
}
}
]
}
Federated Search
route: POST /multi-search
Request
new request parameters:
federation.showPerformanceDetails:true/false(boolean)
example
{
"federation": { "showPerformanceDetails": true },
"queries": [
{
"indexUid": "<index_uid>",
"q": "glass"
}
]
}
Response
new response field:
performanceDetails:{"<span>": "<human_duration>", .. }(map)
example
{
"hits": [
// hits ..
],
"query": "glass",
"processingTimeMs": 5,
"limit": 20,
"offset": 0,
"estimatedTotalHits": 1,
"requestUid": "<uuid>",
"performanceDetails": {
"wait for permit": "213.83µs",
"search > tokenize": "171.67µs",
"search > resolve universe": "257.63µs",
"search > keyword search": "577.71µs",
"search > format": "114.96µs",
"search > federation > wait for remote results": "62.71µs",
"search > federation > merge results": "120.04µs",
"search > federation > merge facets": "53.42µs",
"search > federation": "237.04µs",
"search": "289.08ms"
}
}
Similar
routes: POST /indexes/<index_uid>/similar and GET /indexes/<index_uid>/similar
Request
new request parameters:
showPerformanceDetails:true/false(boolean)
example
{
"id": 143,
"embedder": "manual",
"showPerformanceDetails": true
}
Response
new response field:
performanceDetails:{"<span>": "<human_duration>", .. }(map)
example
{
"hits": [
// hits ..
],
"id": "143",
"processingTimeMs": "[duration]",
"limit": 20,
"offset": 0,
"estimatedTotalHits": 4,
"performanceDetails": {
"search > format": "244.92µs",
"search": "1.25ms"
}
}
By @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6132
Stabilize multithreaded post-processing of facets and prefixes
Multithreaded post-processing of facets and prefixes speeds-up indexing on multi-core machines.
Before v1.35.0, it could be disabled with an experimental feature.
Meilisearch v1.35.0 removes that experimental feature, resulting in the multithreaded post-processing being always enabled.
Cloud users upgrading to v1.35.0 will benefit from the speed-up.
By @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6130
🦋 Fixes
Breaking change: return pagination fields in POST /indexes/<index_uid>/fields route
[!WARNING] Breaking change: The
POST /indexes/<index_uid>/fieldsroute now returns an object containing theresults,offset,limit, andtotalfields instead of returning an array of results. This change allows to know how many fields match a given filter
Example: before/after
Before:
[
// fields ..
]
After:
{
"results": [
// [fields .. ]
],
"offset": 0,
"limit": 20,
"total": 0
}
By @ManyTheFish in https://github.com/meilisearch/meilisearch/pull/6126
POST /indexes/<index_uid>/fields: Fix pattern filtering when a parent field was matching a child pattern: title was matching the pattern title.to*.
Example: before/after
For the following request:
{
"filter": {
"attributePatterns": [
"title.en"
]
}
}
Before Response, title field is returned:
{
"results": [
{
"name": "title",
//metadata...
},
],
"offset": 0,
"limit": 20,
"total": 1
}
After Response, nothing returned:
{
"results": [],
"offset": 0,
"limit": 20,
"total": 0
}
By @ManyTheFish, also in https://github.com/meilisearch/meilisearch/pull/6126
🐛 Other fixes
- Bump mini-dashboard version to fix display of image in local UI interface by @Strift in https://github.com/meilisearch/meilisearch/pull/6129
- Fix mTLS compatibility with Go by @curquiza in https://github.com/meilisearch/meilisearch/pull/6133
🔩 Miscellaneous
- Add AI usage disclosure guidelines to CONTRIBUTING.md by @meili-bot in https://github.com/meilisearch/meilisearch/pull/6114
- Expose SettingsDelta and related types for external crate usage by @MkDev11 in https://github.com/meilisearch/meilisearch/pull/6119
New Contributors
- @MkDev11 made their first contribution in https://github.com/meilisearch/meilisearch/pull/6119 ❤️
Full Changelog: https://github.com/meilisearch/meilisearch/compare/v1.34.3...v1.35.0