diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml
index 87007b7a4..eb28cfa3b 100644
--- a/.code-samples.meilisearch.yaml
+++ b/.code-samples.meilisearch.yaml
@@ -1467,6 +1467,18 @@ related_results_similar_1: |-
"id": 192,
"embedder": "EMBEDDER_NAME"
}'
+export_post_1: |-
+ curl \
+ -X POST 'MEILISEARCH_URL/export' \
+ -H 'Content-Type: application/json' \
+ --data-binary '{
+ "url": "TARGET_INSTANCE_URL",
+ "indexes": {
+ "*": {
+ "overrideSettings": true
+ }
+ }
+ }'
### Code samples for experimental features
experimental_get_metrics_1: |-
diff --git a/docs.json b/docs.json
index 268872406..7860daa2b 100644
--- a/docs.json
+++ b/docs.json
@@ -342,7 +342,8 @@
"reference/api/dump",
"reference/api/experimental_features",
"reference/api/metrics",
- "reference/api/logs"
+ "reference/api/logs",
+ "reference/api/export"
]
},
{
diff --git a/reference/api/export.mdx b/reference/api/export.mdx
new file mode 100644
index 000000000..5356ff58a
--- /dev/null
+++ b/reference/api/export.mdx
@@ -0,0 +1,68 @@
+---
+title: Export
+description: "Migrate between instances with the `/export` route"
+---
+
+import { RouteHighlighter } from '/snippets/route_highlighter.mdx'
+
+import CodeSamplesExperimentalDeleteLogsStream1 from '/snippets/samples/code_samples_experimental_delete_logs_stream_1.mdx';
+
+Use the `/export` route to transfer data from your origin instance to a remote target instance. This is particularly useful when migrating from your local development environment to a Meilisearch Cloud instance.
+
+## Migrate database between instances
+
+
+
+Migrate data from the origin instance to a target instance.
+
+Migration is an additive operation. If the exported indexes already exist in the target instance, Meilisearch keeps the existing documents intact and adds the new data to the index. If the same document is present in both the target and origin, Meilisearch replaces the target documents with the new data.
+
+### Body
+
+| Name | Type | Default value | Description |
+| ------------------- | ------ | ------------- | --------------------------------------------------------------------------------------------------------- |
+| **`url`** * | String | `null` | The target instance's URL address. Required |
+| **`apiKey`** * | String | `null` | An API key with full admin access to the target instance |
+| **`payloadSize`** * | String | "50 MiB" | A string specifying the payload size in a human-readable format |
+| **`indexes`** * | Object | `null` | A set of patterns matching the indexes you want to export. Defaults to all indexes in the origin instance |
+
+#### `url`
+
+A string pointing to a remote Meilisearch instance, including its port if necessary.
+
+This field is required.
+
+#### `apiKey`
+
+A security key with `index.create`, `settings.update`, and `documents.add` permissions to a secured Meilisearch instance.
+
+#### `payloadSize`
+
+The maximum size of each single data payload in a human-readable format such as `"100MiB"`. Larger payloads are generally more efficient, but require significantly more powerful machines.
+
+#### `indexes`
+
+A set of objects whose keys correspond to patterns matching the indexes you want to export. By default, Meilisearch exports all documents across all indexes.
+
+Meilisearch does not override any index settings by default. If the target instance contains an index with the same name as an index you're exporting, Meilisearch uses the settings in the target instance. If the index does not already exist in the target instance, Meilisearch uses the settings in the origin instance.
+
+Each index object accepts the following fields:
+
+- `filter`: a [filter expression](/learn/filtering_and_sorting/filter_expression_reference) defining the subset of documents to export. Optional, defaults to `null`
+- `overrideSettings`: if `true`, configures indexes in the target instance with the origin instance settings. Optional, defaults to `false`
+
+### Example
+
+
+
+#### Response
+
+```json
+{
+ "taskUid": 2,
+ "indexUid": null,
+ "status": "enqueued",
+ "type": "export",
+ "enqueuedAt": "2025-06-26T12:54:10.785864Z"
+}
+```
diff --git a/reference/errors/error_codes.mdx b/reference/errors/error_codes.mdx
index ddd649862..014297e80 100644
--- a/reference/errors/error_codes.mdx
+++ b/reference/errors/error_codes.mdx
@@ -184,6 +184,26 @@ The [`offset`](/reference/api/documents#query-parameters) parameter is invalid.
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).
+## `invalid_export_url`
+
+The export target instance URL is invalid or could not be reached.
+
+## `invalid_export_api_key`
+
+The supplied security key does not have the required permissions to access the target instance.
+
+## `invalid_export_payload_size`
+
+The provided payload size is invalid. The payload size must be a string indicating the maximum payload size in a human-readable format.
+
+## `invalid_export_indexes_patterns`
+
+The provided index pattern is invalid. The index pattern must be an alphanumeric string, optionally including a wildcard.
+
+## `invalid_export_index_filter`
+
+The provided index export filter is not a valid [filter expression](/learn/filtering_and_sorting/filter_expression_reference).
+
## `invalid_facet_search_facet_name`
The attribute used for the `facetName` field is either not a string or not defined in the [`filterableAttributes` list](/reference/api/settings#filterable-attributes).
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_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_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_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..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
})
```
@@ -53,6 +54,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_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_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..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)
}
@@ -192,7 +192,7 @@ namespace Meilisearch_demo
```text Rust
// In your .toml file:
[dependencies]
- meilisearch-sdk = "0.28.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
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_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_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_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_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_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_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_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_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)
```
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