From e62496883f54a9ed54d1c32394557eaf70d1707e Mon Sep 17 00:00:00 2001 From: gui machiavelli Date: Wed, 16 Jul 2025 14:15:58 +0200 Subject: [PATCH 1/7] bump version number --- docs.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs.json b/docs.json index a58aac938..268872406 100644 --- a/docs.json +++ b/docs.json @@ -143,7 +143,7 @@ "navigation": { "versions": [ { - "version": "v1.15", + "version": "v1.16", "anchors": [ { "anchor": "Learn", diff --git a/package.json b/package.json index 0ff347d2d..d7134aae3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.15.0", + "version": "1.16.0", "homepage": "https://meilisearch.com/docs", "license": "MIT", "repository": "meilisearch/documentation", From 1df7c9724d7c0fd818643e274a70fd82102653bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 16 Jul 2025 12:21:16 +0000 Subject: [PATCH 2/7] Update code samples [skip ci] --- ...samples_async_guide_filter_by_statuses_1.mdx | 2 +- ...samples_async_guide_filter_by_statuses_2.mdx | 9 +++++++++ ..._samples_basic_security_tutorial_admin_1.mdx | 8 ++++++++ ...amples_basic_security_tutorial_listing_1.mdx | 8 ++++++++ ...samples_basic_security_tutorial_search_1.mdx | 11 +++++++++++ .../samples/code_samples_facet_search_1.mdx | 10 ++++++++++ .../samples/code_samples_facet_search_2.mdx | 14 ++++++++++++++ .../samples/code_samples_facet_search_3.mdx | 9 +++++++++ .../samples/code_samples_get_all_batches_1.mdx | 4 ++++ snippets/samples/code_samples_get_batch_1.mdx | 4 ++++ .../samples/code_samples_get_embedders_1.mdx | 4 ++++ ...code_samples_get_facet_search_settings_1.mdx | 8 ++++++++ ...ode_samples_get_prefix_search_settings_1.mdx | 8 ++++++++ .../samples/code_samples_get_similar_post_1.mdx | 8 ++++++++ ...de_samples_getting_started_add_documents.mdx | 2 +- .../code_samples_getting_started_faceting.mdx | 3 +++ ...ndex_settings_tutorial_api_get_setting_1.mdx | 7 +++++++ ...ndex_settings_tutorial_api_put_setting_1.mdx | 7 +++++++ ...mples_index_settings_tutorial_api_task_1.mdx | 4 ++++ .../samples/code_samples_negative_search_1.mdx | 8 ++++++++ .../samples/code_samples_negative_search_2.mdx | 8 ++++++++ .../code_samples_related_results_embedder_1.mdx | 16 ++++++++++++++++ .../code_samples_related_results_search_1.mdx | 9 +++++++++ .../code_samples_related_results_similar_1.mdx | 7 +++++++ .../samples/code_samples_reset_embedders_1.mdx | 4 ++++ ...de_samples_reset_facet_search_settings_1.mdx | 8 ++++++++ ...e_samples_reset_prefix_search_settings_1.mdx | 8 ++++++++ ..._samples_search_parameter_guide_hybrid_1.mdx | 10 ++++++++++ ..._samples_search_parameter_guide_vector_1.mdx | 10 ++++++++++ ...h_parameter_reference_retrieve_vectors_1.mdx | 11 +++++++++++ snippets/samples/code_samples_search_post_1.mdx | 2 +- .../samples/code_samples_update_embedders_1.mdx | 17 +++++++++++++++++ ...e_samples_update_facet_search_settings_1.mdx | 8 ++++++++ .../code_samples_update_faceting_settings_1.mdx | 4 ++++ ..._samples_update_prefix_search_settings_1.mdx | 8 ++++++++ 35 files changed, 265 insertions(+), 3 deletions(-) diff --git a/snippets/samples/code_samples_async_guide_filter_by_statuses_1.mdx b/snippets/samples/code_samples_async_guide_filter_by_statuses_1.mdx index 5f67d39c0..609fe90cb 100644 --- a/snippets/samples/code_samples_async_guide_filter_by_statuses_1.mdx +++ b/snippets/samples/code_samples_async_guide_filter_by_statuses_1.mdx @@ -42,7 +42,7 @@ await client.GetTasksAsync(new TasksQuery { Statuses = new List ```rust Rust let mut query = TasksQuery::new(&client); let tasks = query - .with_statuses(["failed", "canceled"]) + .with_statuses(["failed"]) .execute() .await .unwrap(); diff --git a/snippets/samples/code_samples_async_guide_filter_by_statuses_2.mdx b/snippets/samples/code_samples_async_guide_filter_by_statuses_2.mdx index 53e8fd2b4..985a91b0b 100644 --- a/snippets/samples/code_samples_async_guide_filter_by_statuses_2.mdx +++ b/snippets/samples/code_samples_async_guide_filter_by_statuses_2.mdx @@ -4,4 +4,13 @@ curl \ -X GET 'MEILISEARCH_URL/tasks?statuses=failed,canceled' ``` + +```rust Rust +let mut query = TasksQuery::new(&client); +let tasks = query + .with_statuses(["failed", "canceled"]) + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_basic_security_tutorial_admin_1.mdx b/snippets/samples/code_samples_basic_security_tutorial_admin_1.mdx index ea0c45fb6..e0c803c2b 100644 --- a/snippets/samples/code_samples_basic_security_tutorial_admin_1.mdx +++ b/snippets/samples/code_samples_basic_security_tutorial_admin_1.mdx @@ -10,4 +10,12 @@ curl \ "primaryKey": "id" }' ``` + +```rust Rust +let client = Client::new("http://localhost:7700", Some("DEFAULT_ADMIN_API_KEY")); +let task = client + .create_index("medical_records", Some("id")) + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_basic_security_tutorial_listing_1.mdx b/snippets/samples/code_samples_basic_security_tutorial_listing_1.mdx index 549088f02..a9d2c5be0 100644 --- a/snippets/samples/code_samples_basic_security_tutorial_listing_1.mdx +++ b/snippets/samples/code_samples_basic_security_tutorial_listing_1.mdx @@ -4,4 +4,12 @@ curl -X GET 'MEILISEARCH_URL/keys' \ -H 'Authorization: Bearer MASTER_KEY' ``` + +```rust Rust +let client = Client::new("http://localhost:7700", Some("MASTER_KEY")); +client + .get_keys() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_basic_security_tutorial_search_1.mdx b/snippets/samples/code_samples_basic_security_tutorial_search_1.mdx index dbdade30f..edbef1caf 100644 --- a/snippets/samples/code_samples_basic_security_tutorial_search_1.mdx +++ b/snippets/samples/code_samples_basic_security_tutorial_search_1.mdx @@ -7,4 +7,15 @@ curl \ -H 'Authorization: Bearer DEFAULT_SEARCH_API_KEY' \ --data-binary '{ "q": "appointments" }' ``` + +```rust Rust +let client = Client::new("http://localhost:7700", Some("DEFAULT_SEARCH_API_KEY")); +let index = client.index("medical_records"); +index + .search() + .with_query("appointments") + .execute::() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_facet_search_1.mdx b/snippets/samples/code_samples_facet_search_1.mdx index dd2e10724..da8b4b9c9 100644 --- a/snippets/samples/code_samples_facet_search_1.mdx +++ b/snippets/samples/code_samples_facet_search_1.mdx @@ -60,6 +60,16 @@ var query = new SearchFacetsQuery() await client.Index("books").FacetSearchAsync("genres", query); ``` +```rust Rust +let res = client.index("books") + .facet_search("genres") + .with_facet_query("fiction") + .with_filter("rating > 3") + .execute() + .await + .unwrap(); +``` + ```dart Dart await client.index('books').facetSearch( FacetSearchQuery( diff --git a/snippets/samples/code_samples_facet_search_2.mdx b/snippets/samples/code_samples_facet_search_2.mdx index a5380a0ae..6f56f8435 100644 --- a/snippets/samples/code_samples_facet_search_2.mdx +++ b/snippets/samples/code_samples_facet_search_2.mdx @@ -62,6 +62,20 @@ var newFaceting = new Faceting await client.Index("books").UpdateFacetingAsync(newFaceting); ``` +```rust Rust +let mut facet_sort_setting = BTreeMap::new(); +facet_sort_setting.insert("genres".to_string(), FacetSortValue::Count); +let faceting = FacetingSettings { + max_values_per_facet: 100, + sort_facet_values_by: Some(facet_sort_setting), +}; + +let res = client.index("books") + .set_faceting(&faceting) + .await + .unwrap(); +``` + ```dart Dart await client.index('books').updateFaceting( Faceting( diff --git a/snippets/samples/code_samples_facet_search_3.mdx b/snippets/samples/code_samples_facet_search_3.mdx index e6fbb1894..f67d37302 100644 --- a/snippets/samples/code_samples_facet_search_3.mdx +++ b/snippets/samples/code_samples_facet_search_3.mdx @@ -53,6 +53,15 @@ var query = new SearchFacetsQuery() await client.Index("books").FacetSearchAsync("genres", query); ``` +```rust Rust +let res = client.index("books") + .facet_search("genres") + .with_facet_query("c") + .execute() + .await + .unwrap(); +``` + ```dart Dart await client.index('books').facetSearch( FacetSearchQuery( diff --git a/snippets/samples/code_samples_get_all_batches_1.mdx b/snippets/samples/code_samples_get_all_batches_1.mdx index bce94d986..403117765 100644 --- a/snippets/samples/code_samples_get_all_batches_1.mdx +++ b/snippets/samples/code_samples_get_all_batches_1.mdx @@ -20,4 +20,8 @@ $client->getBatches(); ```ruby Ruby client.batches ``` + +```go Go +client.GetBatches(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_get_batch_1.mdx b/snippets/samples/code_samples_get_batch_1.mdx index 7b9a8a94c..a7bc333b1 100644 --- a/snippets/samples/code_samples_get_batch_1.mdx +++ b/snippets/samples/code_samples_get_batch_1.mdx @@ -20,4 +20,8 @@ $client->getBatch(BATCH_UID); ```ruby Ruby client.batch(BATCH_UID) ``` + +```go Go +client.GetBatch(BATCH_UID); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_get_embedders_1.mdx b/snippets/samples/code_samples_get_embedders_1.mdx index d7deff5fc..96325ca5d 100644 --- a/snippets/samples/code_samples_get_embedders_1.mdx +++ b/snippets/samples/code_samples_get_embedders_1.mdx @@ -8,4 +8,8 @@ curl \ ```ruby Ruby client.index('INDEX_NAME').embedders ``` + +```rust Rust +let embedders = index.get_embedders().await.unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_get_facet_search_settings_1.mdx b/snippets/samples/code_samples_get_facet_search_settings_1.mdx index 8b2b15b7c..bfb04ecd9 100644 --- a/snippets/samples/code_samples_get_facet_search_settings_1.mdx +++ b/snippets/samples/code_samples_get_facet_search_settings_1.mdx @@ -24,4 +24,12 @@ client.index('INDEX_UID').facet_search_setting ```go Go client.Index("books").GetFacetSearch() ``` + +```rust Rust +let facet_search: bool = client + .index(INDEX_UID) + .get_facet_search() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_get_prefix_search_settings_1.mdx b/snippets/samples/code_samples_get_prefix_search_settings_1.mdx index 19b518df4..155d4eddb 100644 --- a/snippets/samples/code_samples_get_prefix_search_settings_1.mdx +++ b/snippets/samples/code_samples_get_prefix_search_settings_1.mdx @@ -24,4 +24,12 @@ client.index('INDEX_UID').prefix_search ```go Go client.Index("books").GetPrefixSearch() ``` + +```rust Rust +let prefix_search: PrefixSearchSettings = client + .index(INDEX_UID) + .get_prefix_search() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_get_similar_post_1.mdx b/snippets/samples/code_samples_get_similar_post_1.mdx index a84416895..534a02785 100644 --- a/snippets/samples/code_samples_get_similar_post_1.mdx +++ b/snippets/samples/code_samples_get_similar_post_1.mdx @@ -39,4 +39,12 @@ client.Index("INDEX_NAME").SearchSimilarDocuments(&meilisearch.SimilarDocumentQu Embedder: "default", }, resp) ``` + +```rust Rust +let results = index + .similar_search("TARGET_DOCUMENT_ID", "EMBEDDER_NAME") + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_getting_started_add_documents.mdx b/snippets/samples/code_samples_getting_started_add_documents.mdx index 9d1256878..3aef704a2 100644 --- a/snippets/samples/code_samples_getting_started_add_documents.mdx +++ b/snippets/samples/code_samples_getting_started_add_documents.mdx @@ -192,7 +192,7 @@ namespace Meilisearch_demo ```text Rust // In your .toml file: [dependencies] - meilisearch-sdk = "0.28.0" + meilisearch-sdk = "0.29.0" # futures: because we want to block on futures futures = "0.3" # serde: required if you are going to use documents diff --git a/snippets/samples/code_samples_getting_started_faceting.mdx b/snippets/samples/code_samples_getting_started_faceting.mdx index ccc590264..2461cbd02 100644 --- a/snippets/samples/code_samples_getting_started_faceting.mdx +++ b/snippets/samples/code_samples_getting_started_faceting.mdx @@ -78,8 +78,11 @@ await client.Index("movies").UpdateFacetingAsync(faceting); ``` ```rust Rust +let mut facet_sort_setting = BTreeMap::new(); +facet_sort_setting.insert("*".to_string(), FacetSortValue::Count); let mut faceting = FacetingSettings { max_values_per_facet: 2, + sort_facet_values_by: Some(facet_sort_setting), }; let task: TaskInfo = client diff --git a/snippets/samples/code_samples_index_settings_tutorial_api_get_setting_1.mdx b/snippets/samples/code_samples_index_settings_tutorial_api_get_setting_1.mdx index 897990733..b971e33ec 100644 --- a/snippets/samples/code_samples_index_settings_tutorial_api_get_setting_1.mdx +++ b/snippets/samples/code_samples_index_settings_tutorial_api_get_setting_1.mdx @@ -4,4 +4,11 @@ curl \ -X GET 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/searchable-attributes' ``` + +```rust Rust +let searchable_attributes: Vec = index + .get_searchable_attributes() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_index_settings_tutorial_api_put_setting_1.mdx b/snippets/samples/code_samples_index_settings_tutorial_api_put_setting_1.mdx index 66b6ffee9..f82116ae0 100644 --- a/snippets/samples/code_samples_index_settings_tutorial_api_put_setting_1.mdx +++ b/snippets/samples/code_samples_index_settings_tutorial_api_put_setting_1.mdx @@ -9,4 +9,11 @@ curl \ "overview" ]' ``` + +```rust Rust +let task = index + .set_searchable_attributes(["title", "overview"]) + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_index_settings_tutorial_api_task_1.mdx b/snippets/samples/code_samples_index_settings_tutorial_api_task_1.mdx index 84c80314e..2242766f4 100644 --- a/snippets/samples/code_samples_index_settings_tutorial_api_task_1.mdx +++ b/snippets/samples/code_samples_index_settings_tutorial_api_task_1.mdx @@ -4,4 +4,8 @@ curl \ -X GET 'MEILISEARCH_URL/tasks/TASK_UID' ``` + +```rust Rust +let task_status = index.get_task(&task).await.unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_negative_search_1.mdx b/snippets/samples/code_samples_negative_search_1.mdx index 213db2da5..d55e30b10 100644 --- a/snippets/samples/code_samples_negative_search_1.mdx +++ b/snippets/samples/code_samples_negative_search_1.mdx @@ -14,4 +14,12 @@ client.index('movies').search('-escape') ```php PHP $client->index('movies')->search('-escape'); ``` + +```rust Rust +let results = index.search() + .with_query("-escape") + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_negative_search_2.mdx b/snippets/samples/code_samples_negative_search_2.mdx index bd3146b38..f25dc2bba 100644 --- a/snippets/samples/code_samples_negative_search_2.mdx +++ b/snippets/samples/code_samples_negative_search_2.mdx @@ -14,4 +14,12 @@ client.index('movies').search('-"escape"') ```php PHP $client->index('movies')->search('-"escape"'); ``` + +```rust Rust +let results = index.search() + .with_query("-\"escape room\"") + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_related_results_embedder_1.mdx b/snippets/samples/code_samples_related_results_embedder_1.mdx index 5a66c2737..1f285b42d 100644 --- a/snippets/samples/code_samples_related_results_embedder_1.mdx +++ b/snippets/samples/code_samples_related_results_embedder_1.mdx @@ -15,4 +15,20 @@ curl -X PATCH 'MEILISEARCH_URL/indexes/movies/settings' } }' ``` + +```rust Rust +let embedders = HashMap::from([( + String::from("movies-text"), + Embedder { + source: EmbedderSource::OpenAi, + api_key: Some(String::from("OPENAI_API_KEY")), + model: Some(String::from("text-embedding-3-small")), + document_template: Some(String::from("A movie titled '{{doc.title}}' released in {{ doc.release_date }}. The movie genres are: {{doc.genres}}. The story is about: {{doc.overview|truncatewords: 20}}")), + ..Embedder::default() + } +)]); +movies.set_embedders(&embedders) + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_related_results_search_1.mdx b/snippets/samples/code_samples_related_results_search_1.mdx index c2ae498ed..38bb44ab5 100644 --- a/snippets/samples/code_samples_related_results_search_1.mdx +++ b/snippets/samples/code_samples_related_results_search_1.mdx @@ -11,4 +11,13 @@ curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \ } }' ``` + +```rust Rust +let results = movies.search() + .with_query("batman") + .with_hybrid("EMBEDDER_NAME", 0.5) + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_related_results_similar_1.mdx b/snippets/samples/code_samples_related_results_similar_1.mdx index 8e263858a..24fbdbf35 100644 --- a/snippets/samples/code_samples_related_results_similar_1.mdx +++ b/snippets/samples/code_samples_related_results_similar_1.mdx @@ -10,4 +10,11 @@ curl \ "embedder": "EMBEDDER_NAME" }' ``` + +```rust Rust +let results = movies.similar_search("192", "EMBEDDER_NAME") + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_reset_embedders_1.mdx b/snippets/samples/code_samples_reset_embedders_1.mdx index 77e8a2ff8..b9eaee801 100644 --- a/snippets/samples/code_samples_reset_embedders_1.mdx +++ b/snippets/samples/code_samples_reset_embedders_1.mdx @@ -8,4 +8,8 @@ curl \ ```ruby Ruby client.index('INDEX_NAME').reset_embedders ``` + +```rust Rust +index.reset_embedders().await.unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_reset_facet_search_settings_1.mdx b/snippets/samples/code_samples_reset_facet_search_settings_1.mdx index 6b939a3d3..9591211ce 100644 --- a/snippets/samples/code_samples_reset_facet_search_settings_1.mdx +++ b/snippets/samples/code_samples_reset_facet_search_settings_1.mdx @@ -24,4 +24,12 @@ client.index('INDEX_UID').reset_facet_search_setting ```go Go client.Index("books").ResetFacetSearch() ``` + +```rust Rust +let task: TaskInfo = client + .index(INDEX_UID) + .reset_facet_search() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_reset_prefix_search_settings_1.mdx b/snippets/samples/code_samples_reset_prefix_search_settings_1.mdx index a4670ca9c..b161e68b3 100644 --- a/snippets/samples/code_samples_reset_prefix_search_settings_1.mdx +++ b/snippets/samples/code_samples_reset_prefix_search_settings_1.mdx @@ -24,4 +24,12 @@ client.index('INDEX_UID').reset_prefix_search ```go Go client.Index("books").ResetPrefixSearch() ``` + +```rust Rust +let task: TaskInfo = client + .index(INDEX_UID) + .reset_prefix_search() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_search_parameter_guide_hybrid_1.mdx b/snippets/samples/code_samples_search_parameter_guide_hybrid_1.mdx index eb830e921..e61487848 100644 --- a/snippets/samples/code_samples_search_parameter_guide_hybrid_1.mdx +++ b/snippets/samples/code_samples_search_parameter_guide_hybrid_1.mdx @@ -29,4 +29,14 @@ $client->index('INDEX_NAME')->search('kitchen utensils', [ ] ]); ``` + +```rust Rust +let results = index + .search() + .with_query("kitchen utensils") + .with_hybrid("EMBEDDER_NAME", 0.9) + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_search_parameter_guide_vector_1.mdx b/snippets/samples/code_samples_search_parameter_guide_vector_1.mdx index 3c1c97152..ad8a2c35a 100644 --- a/snippets/samples/code_samples_search_parameter_guide_vector_1.mdx +++ b/snippets/samples/code_samples_search_parameter_guide_vector_1.mdx @@ -10,4 +10,14 @@ curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \ } }' ``` + +```rust Rust +let results = index + .search() + .with_vector(&[0.0, 1.0, 2.0]) + .with_hybrid("EMBEDDER_NAME", 1.0) + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_search_parameter_reference_retrieve_vectors_1.mdx b/snippets/samples/code_samples_search_parameter_reference_retrieve_vectors_1.mdx index bb19be7a1..3aa36ee05 100644 --- a/snippets/samples/code_samples_search_parameter_reference_retrieve_vectors_1.mdx +++ b/snippets/samples/code_samples_search_parameter_reference_retrieve_vectors_1.mdx @@ -29,4 +29,15 @@ $client->index('INDEX_NAME')->search('kitchen utensils', [ ] ]); ``` + +```rust Rust +let results = index + .search() + .with_query("kitchen utensils") + .with_retrieve_vectors(true) + .with_hybrid("EMBEDDER_NAME", 0.5) + .execute() + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_search_post_1.mdx b/snippets/samples/code_samples_search_post_1.mdx index 3057177f4..dfb4452cb 100644 --- a/snippets/samples/code_samples_search_post_1.mdx +++ b/snippets/samples/code_samples_search_post_1.mdx @@ -39,7 +39,7 @@ await client.Index("movies").SearchAsync("American ninja"); let results: SearchResults = client .index("movies") .search() - .with_query("American ninja") + .with_query("american ninja") .execute() .await .unwrap(); diff --git a/snippets/samples/code_samples_update_embedders_1.mdx b/snippets/samples/code_samples_update_embedders_1.mdx index f8fb461ee..89c1458e1 100644 --- a/snippets/samples/code_samples_update_embedders_1.mdx +++ b/snippets/samples/code_samples_update_embedders_1.mdx @@ -46,4 +46,21 @@ client.index('INDEX_NAME').update_embedders( } ) ``` + +```rust Rust +let embedders = HashMap::from([( + String::from("default"), + Embedder { + source: EmbedderSource::OpenAi, + api_key: Some(String::from("OPEN_AI_API_KEY")), + model: Some(String::from("text-embedding-3-small")), + document_template: Some(String::from("A document titled '{{doc.title}}' whose description starts with {{doc.overview|truncatewords: 20}}")), + ..Embedder::default() + } +)]); +let task = index + .set_embedders(&embedders) + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_update_facet_search_settings_1.mdx b/snippets/samples/code_samples_update_facet_search_settings_1.mdx index bb7a7ac19..bbcbe5a39 100644 --- a/snippets/samples/code_samples_update_facet_search_settings_1.mdx +++ b/snippets/samples/code_samples_update_facet_search_settings_1.mdx @@ -26,4 +26,12 @@ client.index('INDEX_UID').update_facet_search_setting(false) ```go Go client.Index("books").UpdateFacetSearch(false) ``` + +```rust Rust +let task: TaskInfo = client + .index(INDEX_UID) + .set_facet_search(false) + .await + .unwrap(); +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_update_faceting_settings_1.mdx b/snippets/samples/code_samples_update_faceting_settings_1.mdx index b56548fe9..5c1ce28ef 100644 --- a/snippets/samples/code_samples_update_faceting_settings_1.mdx +++ b/snippets/samples/code_samples_update_faceting_settings_1.mdx @@ -85,8 +85,12 @@ await client.Index("books").UpdateFacetingAsync(faceting); ``` ```rust Rust +let mut facet_sort_setting = BTreeMap::new(); +facet_sort_setting.insert(String::from("*"), FacetSortValue::Alpha); +facet_sort_setting.insert(String::from("genres"), FacetSortValue::Count); let mut faceting = FacetingSettings { max_values_per_facet: 2, + sort_facet_values_by: Some(facet_sort_setting), }; let task: TaskInfo = client diff --git a/snippets/samples/code_samples_update_prefix_search_settings_1.mdx b/snippets/samples/code_samples_update_prefix_search_settings_1.mdx index 2f7f00d6a..4e4dcd1f6 100644 --- a/snippets/samples/code_samples_update_prefix_search_settings_1.mdx +++ b/snippets/samples/code_samples_update_prefix_search_settings_1.mdx @@ -26,4 +26,12 @@ client.index('INDEX_UID').update_prefix_search('disabled') ```go Go client.Index("books").UpdatePrefixSearch("disabled") ``` + +```rust Rust +let task: TaskInfo = client + .index(INDEX_UID) + .set_prefix_search(PrefixSearchSettings::Disabled) + .await + .unwrap(); +``` \ No newline at end of file From 5d40145cda68787eaa7a9750c045a8e4d8561bf3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 17 Jul 2025 15:53:42 +0000 Subject: [PATCH 3/7] Update code samples [skip ci] --- snippets/samples/code_samples_getting_started_add_documents.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/samples/code_samples_getting_started_add_documents.mdx b/snippets/samples/code_samples_getting_started_add_documents.mdx index 3aef704a2..eeeb95f89 100644 --- a/snippets/samples/code_samples_getting_started_add_documents.mdx +++ b/snippets/samples/code_samples_getting_started_add_documents.mdx @@ -192,7 +192,7 @@ namespace Meilisearch_demo ```text Rust // In your .toml file: [dependencies] - meilisearch-sdk = "0.29.0" + meilisearch-sdk = "0.29.1" # futures: because we want to block on futures futures = "0.3" # serde: required if you are going to use documents From 48f4bdde138e7e65ced0589754c3ffc9b16eb2f5 Mon Sep 17 00:00:00 2001 From: gui machiavelli Date: Mon, 28 Jul 2025 18:56:19 +0200 Subject: [PATCH 4/7] v1.16: Telemetry updates (#3325) --------- Co-authored-by: macraig --- learn/resources/telemetry.mdx | 9 ++++++++ .../code_samples_add_movies_json_1.mdx | 2 +- ...ode_samples_add_or_replace_documents_1.mdx | 2 +- ...code_samples_add_or_update_documents_1.mdx | 2 +- ...les_date_guide_filterable_attributes_1.mdx | 2 +- .../code_samples_date_guide_index_1.mdx | 2 +- ..._distinct_attribute_guide_filterable_1.mdx | 2 +- .../samples/code_samples_facet_search_3.mdx | 1 + ...mples_faceted_search_update_settings_1.mdx | 2 +- ...de_samples_filtering_update_settings_1.mdx | 2 +- ...ples_geosearch_guide_filter_settings_1.mdx | 2 +- ..._samples_getting_started_add_documents.mdx | 2 +- ...samples_getting_started_add_meteorites.mdx | 2 +- ...code_samples_landing_getting_started_1.mdx | 2 +- ...y_field_guide_add_document_primary_key.mdx | 3 ++- .../code_samples_typo_tolerance_guide_5.mdx | 6 +++++ ...samples_update_filterable_attributes_1.mdx | 22 ++++++++++++++++++- 17 files changed, 51 insertions(+), 14 deletions(-) diff --git a/learn/resources/telemetry.mdx b/learn/resources/telemetry.mdx index 263e55d4b..93674e8e9 100644 --- a/learn/resources/telemetry.mdx +++ b/learn/resources/telemetry.mdx @@ -225,6 +225,8 @@ This list is liable to change with every new version of Meilisearch. It's not be | `infos.experimental_edit_documents_by_function` | `true` if the `editDocumentsByFunction` experimental feature is enabled | false | `infos.experimental_enable_metrics` | `true` if `--experimental-enable-metrics` is specified at launch | false | `infos.experimental_embedding_cache_entries` | Size of configured embedding cache | 100 +| `infos.experimental_multimodal` | `true` when multimodal search feature is enabled | true | +| `infos.experimental_no_edition_2024_for_settings` | `true` if instance disabled new indexer | false | `infos.experimental_replication_parameters` | `true` if `--experimental-replication-parameters` is specified at launch | false | `infos.experimental_reduce_indexing_memory_usage` | `true` if `--experimental-reduce-indexing-memory-usage` is specified at launch | false | `infos.experimental_logs_mode` | `human` or `json` depending on the value specified | human @@ -248,6 +250,7 @@ This list is liable to change with every new version of Meilisearch. It's not be | `vector.retrieve_vectors` | `true` if the retrieve_vectors parameter has been used in this batch. | false | `hybrid.enabled` | `true` if hybrid search been used in the aggregated event | true | `hybrid.semantic_ratio` | `true` if semanticRatio was used in this batch, otherwise false | false +| `hybrid.total_media` | Aggregated number of search requests where `media` is not `null` | 42 | `embedders.total` | Numbers of defined embedders | 2 | `embedders.sources` | An array representing the different provided sources | ["huggingFace", "userProvided"] | `embedders.document_template_used` | A boolean indicating if one of the provided embedders has a custom template defined | true @@ -264,3 +267,9 @@ This list is liable to change with every new version of Meilisearch. It's not be | `experimental_network` | `true` when the network experimental feature is enabled | true | `remotes.total_distinct_remote_count` | Sum of the number of distinct remotes appearing in each search request of the aggregate | 48 | `remotes.avg_distinct_remote_count` | Average number of distinct remotes appearing in a search request of the aggregate | 2.33 +| `multimodal` | `true` when multimodal search is enabled via the `/experimental-features` route | true +| `export.total_received` | Number of exports received in this batch | `152` +| `export.has_api_key` | Number of exports with an API Key set | `89` +| `export.avg_index_patterns` | Average number of index patterns set per export | `3.2` +| `export.avg_patterns_with_filter` | Average number of index patterns with filters per export | `1.7` +| `export.avg_payload_size` | Average payload size per export | `512` diff --git a/snippets/samples/code_samples_add_movies_json_1.mdx b/snippets/samples/code_samples_add_movies_json_1.mdx index 414246df0..068206c70 100644 --- a/snippets/samples/code_samples_add_movies_json_1.mdx +++ b/snippets/samples/code_samples_add_movies_json_1.mdx @@ -59,7 +59,7 @@ file, _ := os.ReadFile("movies.json") var movies interface{} json.Unmarshal([]byte(file), &movies) -client.Index("movies").AddDocuments(&movies) +client.Index("movies").AddDocuments(&movies, nil) ``` ```csharp C# diff --git a/snippets/samples/code_samples_add_or_replace_documents_1.mdx b/snippets/samples/code_samples_add_or_replace_documents_1.mdx index 13ae38b9d..7d9fb5a7f 100644 --- a/snippets/samples/code_samples_add_or_replace_documents_1.mdx +++ b/snippets/samples/code_samples_add_or_replace_documents_1.mdx @@ -80,7 +80,7 @@ documents := []map[string]interface{}{ "release_date": "2019-03-23", }, } -client.Index("movies").AddDocuments(documents) +client.Index("movies").AddDocuments(documents, nil) ``` ```csharp C# diff --git a/snippets/samples/code_samples_add_or_update_documents_1.mdx b/snippets/samples/code_samples_add_or_update_documents_1.mdx index a3c1cd3dd..53a1dd526 100644 --- a/snippets/samples/code_samples_add_or_update_documents_1.mdx +++ b/snippets/samples/code_samples_add_or_update_documents_1.mdx @@ -66,7 +66,7 @@ documents := []map[string]interface{}{ "genres": "comedy", }, } -client.Index("movies").UpdateDocuments(documents) +client.Index("movies").UpdateDocuments(documents, nil) ``` ```csharp C# diff --git a/snippets/samples/code_samples_date_guide_filterable_attributes_1.mdx b/snippets/samples/code_samples_date_guide_filterable_attributes_1.mdx index 2fe51dc2b..98595a358 100644 --- a/snippets/samples/code_samples_date_guide_filterable_attributes_1.mdx +++ b/snippets/samples/code_samples_date_guide_filterable_attributes_1.mdx @@ -30,7 +30,7 @@ client.index('games').update_filterable_attributes(['release_timestamp']) ``` ```go Go -filterableAttributes := []string{"release_timestamp"} +filterableAttributes := []interface{}{"release_timestamp"} client.Index("games").UpdateFilterableAttributes(&filterableAttributes) ``` diff --git a/snippets/samples/code_samples_date_guide_index_1.mdx b/snippets/samples/code_samples_date_guide_index_1.mdx index 1f22bd3bd..4f89b156e 100644 --- a/snippets/samples/code_samples_date_guide_index_1.mdx +++ b/snippets/samples/code_samples_date_guide_index_1.mdx @@ -54,7 +54,7 @@ byteValue, _ := io.ReadAll(jsonFile) var games []map[string]interface{} json.Unmarshal(byteValue, &games) -client.Index("games").AddDocuments(games) +client.Index("games").AddDocuments(games, nil) ``` ```csharp C# diff --git a/snippets/samples/code_samples_distinct_attribute_guide_filterable_1.mdx b/snippets/samples/code_samples_distinct_attribute_guide_filterable_1.mdx index 60e30700b..7412dfadb 100644 --- a/snippets/samples/code_samples_distinct_attribute_guide_filterable_1.mdx +++ b/snippets/samples/code_samples_distinct_attribute_guide_filterable_1.mdx @@ -38,7 +38,7 @@ client.index('products').update_filterable_attributes([ ``` ```go Go -filterableAttributes := []string{ +filterableAttributes := []interface{}{ "product_id", "sku", "url", diff --git a/snippets/samples/code_samples_facet_search_3.mdx b/snippets/samples/code_samples_facet_search_3.mdx index f67d37302..70c2bcdc9 100644 --- a/snippets/samples/code_samples_facet_search_3.mdx +++ b/snippets/samples/code_samples_facet_search_3.mdx @@ -42,6 +42,7 @@ client.index('books').facet_search('genres', 'c') client.Index("books").FacetSearch(&meilisearch.FacetSearchRequest{ FacetQuery: "c", FacetName: "genres", + ExhaustiveFacetCount: true }) ``` diff --git a/snippets/samples/code_samples_faceted_search_update_settings_1.mdx b/snippets/samples/code_samples_faceted_search_update_settings_1.mdx index 9c7b7d243..7b5255a44 100644 --- a/snippets/samples/code_samples_faceted_search_update_settings_1.mdx +++ b/snippets/samples/code_samples_faceted_search_update_settings_1.mdx @@ -34,7 +34,7 @@ client.index('movie_ratings').update_filterable_attributes(['genres', 'rating', ``` ```go Go -filterableAttributes := []string{ +filterableAttributes := []interface{}{ "genres", "rating", "language", diff --git a/snippets/samples/code_samples_filtering_update_settings_1.mdx b/snippets/samples/code_samples_filtering_update_settings_1.mdx index b73c1095b..9ecaed4cf 100644 --- a/snippets/samples/code_samples_filtering_update_settings_1.mdx +++ b/snippets/samples/code_samples_filtering_update_settings_1.mdx @@ -47,7 +47,7 @@ client.index('movies').update_filterable_attributes([ ``` ```go Go -resp, err := client.Index("movies").UpdateFilterableAttributes(&[]string{ +resp, err := client.Index("movies").UpdateFilterableAttributes(&[]interface{}{ "director", "genres", }) diff --git a/snippets/samples/code_samples_geosearch_guide_filter_settings_1.mdx b/snippets/samples/code_samples_geosearch_guide_filter_settings_1.mdx index 79aa98f98..32732e600 100644 --- a/snippets/samples/code_samples_geosearch_guide_filter_settings_1.mdx +++ b/snippets/samples/code_samples_geosearch_guide_filter_settings_1.mdx @@ -37,7 +37,7 @@ client.index('restaurants').update_filterable_attributes(['_geo']) ``` ```go Go -filterableAttributes := []string{ +filterableAttributes := []interface{}{ "_geo", } client.Index("restaurants").UpdateFilterableAttributes(&filterableAttributes) diff --git a/snippets/samples/code_samples_getting_started_add_documents.mdx b/snippets/samples/code_samples_getting_started_add_documents.mdx index eeeb95f89..9a2a53b20 100644 --- a/snippets/samples/code_samples_getting_started_add_documents.mdx +++ b/snippets/samples/code_samples_getting_started_add_documents.mdx @@ -140,7 +140,7 @@ func main() { var movies []map[string]interface{} json.Unmarshal(byteValue, &movies) - _, err := client.Index("movies").AddDocuments(movies) + _, err := client.Index("movies").AddDocuments(movies, nil) if err != nil { panic(err) } diff --git a/snippets/samples/code_samples_getting_started_add_meteorites.mdx b/snippets/samples/code_samples_getting_started_add_meteorites.mdx index 90a4cf556..77373581e 100644 --- a/snippets/samples/code_samples_getting_started_add_meteorites.mdx +++ b/snippets/samples/code_samples_getting_started_add_meteorites.mdx @@ -60,7 +60,7 @@ byteValue, _ := io.ReadAll(jsonFile) var meteorites []map[string]interface{} json.Unmarshal(byteValue, &meteorites) -client.Index("meteorites").AddDocuments(meteorites) +client.Index("meteorites").AddDocuments(meteorites, nil) ``` ```csharp C# diff --git a/snippets/samples/code_samples_landing_getting_started_1.mdx b/snippets/samples/code_samples_landing_getting_started_1.mdx index 49d15df9e..b353fed74 100644 --- a/snippets/samples/code_samples_landing_getting_started_1.mdx +++ b/snippets/samples/code_samples_landing_getting_started_1.mdx @@ -81,7 +81,7 @@ documents := []map[string]interface{}{ { "id": 5, "title": "Moana" }, { "id": 6, "title": "Philadelphia" }, } -client.Index("movies").AddDocuments(documents) +client.Index("movies").AddDocuments(documents, nil) ``` ```csharp C# diff --git a/snippets/samples/code_samples_primary_field_guide_add_document_primary_key.mdx b/snippets/samples/code_samples_primary_field_guide_add_document_primary_key.mdx index 1c30ac801..6d8ecc627 100644 --- a/snippets/samples/code_samples_primary_field_guide_add_document_primary_key.mdx +++ b/snippets/samples/code_samples_primary_field_guide_add_document_primary_key.mdx @@ -85,7 +85,8 @@ documents := []map[string]interface{}{ "price": 5.00, }, } -client.Index("books").AddDocuments(documents, "reference_number") +refrenceNumber := "reference_number" +client.Index("books").AddDocuments(documents, &refrenceNumber) ``` ```csharp C# diff --git a/snippets/samples/code_samples_typo_tolerance_guide_5.mdx b/snippets/samples/code_samples_typo_tolerance_guide_5.mdx index 6733ece79..55582c22b 100644 --- a/snippets/samples/code_samples_typo_tolerance_guide_5.mdx +++ b/snippets/samples/code_samples_typo_tolerance_guide_5.mdx @@ -26,4 +26,10 @@ $client->index('movies')->updateTypoTolerance([ 'disableOnNumbers' => true ]); ``` + +```go Go +client.Index("movies").UpdateTypoTolerance(&meilisearch.TypoTolerance{ + DisableOnNumbers: true +}) +``` \ No newline at end of file diff --git a/snippets/samples/code_samples_update_filterable_attributes_1.mdx b/snippets/samples/code_samples_update_filterable_attributes_1.mdx index e5319e8fe..280180ef9 100644 --- a/snippets/samples/code_samples_update_filterable_attributes_1.mdx +++ b/snippets/samples/code_samples_update_filterable_attributes_1.mdx @@ -71,9 +71,29 @@ client.index('movies').update_filterable_attributes([ ``` ```go Go -filterableAttributes := []string{ +filterableAttributes := []interface{}{ "genres", "director", + AttributeRule{ + AttributePatterns: []string{"tag"} + Features: AttributeFeatures{ + FacetSearch: false, + Filter: FilterFeatures{ + Equality: true, + Comparison: false, + } + } + }, + map[string]interface{}{ + "attributePatterns": []interface{}{"year"} + "features": map[string]interface{}{ + "facetSearch": false, + "filter": map[string]interface{}{ + "equality": true, + "comparison": true, + } + } + } } client.Index("movies").UpdateFilterableAttributes(&filterableAttributes) ``` From 01a550e03e348682bf24c75250aa9c59440f1d78 Mon Sep 17 00:00:00 2001 From: gui machiavelli Date: Mon, 28 Jul 2025 18:57:02 +0200 Subject: [PATCH 5/7] v1.16: Experimental: Disable new indexer (#3313) --- learn/resources/experimental_features_overview.mdx | 1 + .../self_hosted/configure_meilisearch_at_launch.mdx | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/learn/resources/experimental_features_overview.mdx b/learn/resources/experimental_features_overview.mdx index c245ee2aa..90a16a8b1 100644 --- a/learn/resources/experimental_features_overview.mdx +++ b/learn/resources/experimental_features_overview.mdx @@ -59,3 +59,4 @@ Activating or deactivating experimental features this way does not require you t | [Search query embedding cache](/learn/self_hosted/configure_meilisearch_at_launch#search-query-embedding-cache) | Enable a cache for search query embeddings | CLI flag or environment variable | | [Uncompressed snapshots](/learn/self_hosted/configure_meilisearch_at_launch#uncompressed-snapshots) | Disable snapshot compaction | CLI flag or environment variable | | [Maximum batch payload size](/learn/self_hosted/configure_meilisearch_at_launch#maximum-batch-payload-size) | Limit batch payload size | CLI flag or environment variable | +| [Disable new indexer](/learn/self_hosted/configure_meilisearch_at_launch) | Use previous settings indexer | CLI flag or environment variable | diff --git a/learn/self_hosted/configure_meilisearch_at_launch.mdx b/learn/self_hosted/configure_meilisearch_at_launch.mdx index 48d9540b7..5bd0c3dc1 100644 --- a/learn/self_hosted/configure_meilisearch_at_launch.mdx +++ b/learn/self_hosted/configure_meilisearch_at_launch.mdx @@ -538,6 +538,18 @@ Helps running Meilisearch in cluster environments. It does this by modifying tas - Allows you to manually set task uids by adding a custom `TaskId` header to your API requests - Allows you to dry register tasks by specifying a `DryRun: true` header in your request +### Disable new indexer + + +🚩 This option does not take any values. Assigning a value will throw an error. 🚩 + + +**Environment variable**: `MEILI_EXPERIMENTAL_NO_EDITION_2024_FOR_SETTINGS`
+**CLI option**: `--experimental-no-edition-2024-for-settings`
+**Default value**: `None`
+ +Falls back to previous settings indexer. + ### SSL options #### SSL authentication path From 4d5f14e0696524e5b2444efb016ddc5658023120 Mon Sep 17 00:00:00 2001 From: gui machiavelli Date: Mon, 28 Jul 2025 18:57:40 +0200 Subject: [PATCH 6/7] v1.16: Bump Docker image tag version (#3323) --- guides/docker.mdx | 16 ++++++++-------- .../self_hosted/install_meilisearch_locally.mdx | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/guides/docker.mdx b/guides/docker.mdx index 410bce2a4..76c0f6f08 100644 --- a/guides/docker.mdx +++ b/guides/docker.mdx @@ -12,7 +12,7 @@ Docker is a tool that bundles applications into containers. Docker containers en Docker containers are distributed in images. To use Meilisearch, use the `docker pull` command to download a Meilisearch image: ```sh -docker pull getmeili/meilisearch:v1.15 +docker pull getmeili/meilisearch:v1.16 ``` Meilisearch deploys a new Docker image with every release of the engine. Each image is tagged with the corresponding Meilisearch version, indicated in the above example by the text following the `:` symbol. You can see [the full list of available Meilisearch Docker images](https://hub.docker.com/r/getmeili/meilisearch/tags#!) on Docker Hub. @@ -29,7 +29,7 @@ After completing the previous step, use `docker run` to launch the Meilisearch i docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 + getmeili/meilisearch:v1.16 ``` ### Configure Meilisearch @@ -45,7 +45,7 @@ docker run -it --rm \ -p 7700:7700 \ -e MEILI_MASTER_KEY='MASTER_KEY'\ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 + getmeili/meilisearch:v1.16 ``` #### Passing instance options with CLI arguments @@ -56,7 +56,7 @@ If you want to pass command-line arguments to Meilisearch with Docker, you must docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 \ + getmeili/meilisearch:v1.16 \ meilisearch --master-key="MASTER_KEY" ``` @@ -74,7 +74,7 @@ To keep your data intact between reboots, specify a dedicated volume by running docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 + getmeili/meilisearch:v1.16 ``` The example above uses `$(pwd)/meili_data`, which is a directory in the host machine. Depending on your OS, mounting volumes from the host to the container might result in performance loss and is only recommended when developing your application. @@ -89,7 +89,7 @@ To import a dump, use Meilisearch's `--import-dump` command-line option and spec docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 \ + getmeili/meilisearch:v1.16 \ meilisearch --import-dump /meili_data/dumps/20200813-042312213.dump ``` @@ -109,7 +109,7 @@ To generate a Meilisearch snapshot with Docker, launch Meilisearch with `--sched docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 \ + getmeili/meilisearch:v1.16 \ meilisearch --schedule-snapshot --snapshot-dir /meili_data/snapshots ``` @@ -121,7 +121,7 @@ To import a snapshot, launch Meilisearch with the `--import-snapshot` option: docker run -it --rm \ -p 7700:7700 \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 \ + getmeili/meilisearch:v1.16 \ meilisearch --import-snapshot /meili_data/snapshots/data.ms.snapshot ``` diff --git a/learn/self_hosted/install_meilisearch_locally.mdx b/learn/self_hosted/install_meilisearch_locally.mdx index c93fc9ddc..7cb35f5f6 100644 --- a/learn/self_hosted/install_meilisearch_locally.mdx +++ b/learn/self_hosted/install_meilisearch_locally.mdx @@ -53,14 +53,14 @@ These commands launch the **latest stable release** of Meilisearch. ```bash # Fetch the latest version of Meilisearch image from DockerHub -docker pull getmeili/meilisearch:v1.15 +docker pull getmeili/meilisearch:v1.16 # Launch Meilisearch in development mode with a master key docker run -it --rm \ -p 7700:7700 \ -e MEILI_ENV='development' \ -v $(pwd)/meili_data:/meili_data \ - getmeili/meilisearch:v1.15 + getmeili/meilisearch:v1.16 # Use ${pwd} instead of $(pwd) in PowerShell ``` From 1508511065a129de2850f4bd6b97727faec5d981 Mon Sep 17 00:00:00 2001 From: gui machiavelli Date: Mon, 28 Jul 2025 18:58:05 +0200 Subject: [PATCH 7/7] v1.16: Add `sort` parameter to `/documents` route (#3318) --- reference/api/documents.mdx | 3 +++ reference/errors/error_codes.mdx | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/reference/api/documents.mdx b/reference/api/documents.mdx index ab49ac0ac..4d8381b99 100644 --- a/reference/api/documents.mdx +++ b/reference/api/documents.mdx @@ -48,6 +48,8 @@ Use `offset` and `limit` to browse through documents. | **`fields`** | Array of strings/`null` | `*` | Document attributes to show (case-sensitive, comma-separated) | | **`filter`** | String/Array of array of strings/`null` | N/A | Refine results based on attributes in the `filterableAttributes` list | | **`retrieveVectors`** | Boolean | `false` | Return document vector data with search result | +| **`sort`** | `null` | A list of attributes written as an array or as a comma-separated string | + | **`ids`** | Array of primary keys | `null` | Return documents based on their primary keys | @@ -137,6 +139,7 @@ Using the query parameters `offset` and `limit`, you can browse through all your | **`fields`** | `*` | Document attributes to show (case-sensitive, comma-separated) | | **`filter`** | N/A | Refine results based on attributes in the `filterableAttributes` list | | **`retrieveVectors`** | `false` | Return document vector data with search result | +| **`sort`** | `null` | A list of comma-separated attributes | | **`ids`** | `null` | Return documents based on their primary keys | ### Response diff --git a/reference/errors/error_codes.mdx b/reference/errors/error_codes.mdx index ddd649862..bf4c8dd1f 100644 --- a/reference/errors/error_codes.mdx +++ b/reference/errors/error_codes.mdx @@ -180,6 +180,14 @@ The [`limit`](/reference/api/documents#query-parameters) parameter is invalid. I The [`offset`](/reference/api/documents#query-parameters) parameter is invalid. It should be an integer. +## `invalid_document_sort` + +This error occurs if: + +- The syntax for the [`sort`](/reference/api/documents#body) parameter is invalid +- The attribute used for sorting is not defined in the [`sortableAttributes`](/reference/api/settings#sortable-attributes) list or the `sort` ranking rule is missing from the settings +- A reserved keyword like `_geo`, `_geoDistance`, `_geoRadius`, or `_geoBoundingBox` is used as a filter + ## `invalid_document_geo_field` The provided `_geo` field of one or more documents is invalid. Meilisearch expects `_geo` to be an object with two fields, `lat` and `lng`, each containing geographic coordinates expressed as a string or floating point number. Read more about `_geo` and how to troubleshoot it in [our dedicated guide](/learn/filtering_and_sorting/geosearch).