pub struct Client { /* private fields */ }
Expand description

The top-level struct of the SDK, representing a client containing indexes.

Implementations§

source§

impl Client

source

pub fn new(host: impl Into<String>, api_key: impl Into<String>) -> Client

Create a client using the specified server. Don’t put a ‘/’ at the end of the host. In production mode, see the documentation about authentication.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
source

pub async fn list_all_indexes(&self) -> Result<IndexesResults, Error>

List all Indexes with query parameters and returns values as instances of Index.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

let indexes: IndexesResults = client.list_all_indexes().await.unwrap();
println!("{:?}", indexes);
source

pub async fn list_all_indexes_with(
&self,
indexes_query: &IndexesQuery<'_>
) -> Result<IndexesResults, Error>

List all Indexes and returns values as instances of Index.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let mut query = IndexesQuery::new(&client);
query.with_limit(1);
let indexes: IndexesResults = client.list_all_indexes_with(&query).await.unwrap();

assert_eq!(indexes.limit, 1);
source

pub async fn list_all_indexes_raw(&self) -> Result<Value, Error>

List all Indexes and returns as Json.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

let json_indexes = client.list_all_indexes_raw().await.unwrap();
println!("{:?}", json_indexes);
source

pub async fn list_all_indexes_raw_with(
&self,
indexes_query: &IndexesQuery<'_>
) -> Result<Value, Error>

List all Indexes with query parameters and returns as Json.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

let mut query = IndexesQuery::new(&client);
query.with_limit(1);
let json_indexes = client.list_all_indexes_raw_with(&query).await.unwrap();

println!("{:?}", json_indexes);
source

pub async fn get_index(&self, uid: impl AsRef<str>) -> Result<Index, Error>

Get an Index, this index should already exist.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

// get the index named "get_index"
let index = client.get_index("get_index").await.unwrap();
assert_eq!(index.as_ref(), "get_index");
source

pub async fn get_raw_index(&self, uid: impl AsRef<str>) -> Result<Value, Error>

Get a raw JSON Index, this index should already exist.

Example
// create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

// get the index named "get_raw_index"
let raw_index = client.get_raw_index("get_raw_index").await.unwrap();
assert_eq!(raw_index.get("uid").unwrap().as_str().unwrap(), "get_raw_index");

If you use it directly from an Index, you can use the method Index::fetch_info, which is the equivalent method from an index.

source

pub fn index(&self, uid: impl Into<String>) -> Index

Create a corresponding object of an Index without any check or doing an HTTP call.

source

pub async fn create_index(
&self,
uid: impl AsRef<str>,
primary_key: Option<&str>
) -> Result<TaskInfo, Error>

Create an Index. The second parameter will be used as the primary key of the new index. If it is not specified, Meilisearch will try to infer the primary key.

Example
// Create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

// Create a new index called movies and access it
let task = client.create_index("create_index", None).await.unwrap();

// Wait for the task to complete
let task = task.wait_for_completion(&client, None, None).await.unwrap();

// Try to get the inner index if the task succeeded
let index = task.try_make_index(&client).unwrap();

assert_eq!(index.as_ref(), "create_index");
source

pub async fn delete_index(&self, uid: impl AsRef<str>) -> Result<TaskInfo, Error>

Delete an index from its UID. To delete an Index, use the Index::delete method.

source

pub async fn get_indexes(&self) -> Result<IndexesResults, Error>

source

pub async fn get_indexes_with(
&self,
indexes_query: &IndexesQuery<'_>
) -> Result<IndexesResults, Error>

source

pub async fn get_indexes_raw(&self) -> Result<Value, Error>

source

pub async fn get_indexes_raw_with(
&self,
indexes_query: &IndexesQuery<'_>
) -> Result<Value, Error>

source

pub async fn swap_indexes(
&self,
indexes: impl IntoIterator<Item = &SwapIndexes>
) -> Result<TaskInfo, Error>

Swaps a list of two Index’es.

Example
// Create the client
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);

let task_index_1 = client.create_index("swap_index_1", None).await.unwrap();
let task_index_2 = client.create_index("swap_index_2", None).await.unwrap();

// Wait for the task to complete
task_index_2.wait_for_completion(&client, None, None).await.unwrap();

let task = client
.swap_indexes([&SwapIndexes {
    indexes: (
        "swap_index_1".to_string(),
        "swap_index_2".to_string(),
    ),
}])
.await
.unwrap();
source

pub async fn get_stats(&self) -> Result<ClientStats, Error>

Get stats of all indexes.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let stats = client.get_stats().await.unwrap();
source

pub async fn health(&self) -> Result<Health, Error>

Get health of Meilisearch server.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let health = client.health().await.unwrap();
assert_eq!(health.status, "available");
source

pub async fn is_healthy(&self) -> bool

Get health of Meilisearch server, return true or false.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let health = client.is_healthy().await;
assert_eq!(health, true);
source

pub async fn get_keys_with(
&self,
keys_query: &KeysQuery
) -> Result<KeysResults, Error>

Get the API Keys from Meilisearch with parameters. See the meilisearch documentation.

See also Client::create_key and Client::get_key.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let mut query = KeysQuery::new();
query.with_limit(1);
let keys = client.get_keys_with(&query).await.unwrap();

assert_eq!(keys.results.len(), 1);
source

pub async fn get_keys(&self) -> Result<KeysResults, Error>

Get the API Keys from Meilisearch. See the meilisearch documentation.

See also Client::create_key and Client::get_key.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let keys = client.get_keys().await.unwrap();

assert_eq!(keys.limit, 20);
source

pub async fn get_key(&self, key: impl AsRef<str>) -> Result<Key, Error>

Get one API Key from Meilisearch. See the meilisearch documentation.

See also Client::create_key and Client::get_keys.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
    .find(|k| k.name.as_ref().map_or(false, |name| name.starts_with("Default Search API Key")))
    .unwrap();

let key = client.get_key(key).await.unwrap();

assert_eq!(key.name, Some("Default Search API Key".to_string()));
source

pub async fn delete_key(&self, key: impl AsRef<str>) -> Result<(), Error>

Delete an API Key from Meilisearch. See the meilisearch documentation.

See also Client::create_key, Client::update_key and Client::get_key.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let key = KeyBuilder::new();
let key = client.create_key(key).await.unwrap();
let inner_key = key.key.clone();

client.delete_key(key).await.unwrap();

let keys = client.get_keys().await.unwrap();
assert!(keys.results.iter().all(|key| key.key != inner_key));
source

pub async fn create_key(&self, key: impl AsRef<KeyBuilder>) -> Result<Key, Error>

Create an API Key in Meilisearch. See the meilisearch documentation.

See also Client::update_key, Client::delete_key and Client::get_key.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let name = "create_key".to_string();
let mut key = KeyBuilder::new();
key.with_name(&name);

let key = client.create_key(key).await.unwrap();
assert_eq!(key.name, Some(name));
source

pub async fn update_key(&self, key: impl AsRef<KeyUpdater>) -> Result<Key, Error>

Update an API Key in Meilisearch. See the meilisearch documentation.

See also Client::create_key, Client::delete_key and Client::get_key.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let new_key = KeyBuilder::new();
let name = "my name".to_string();
let mut new_key = client.create_key(new_key).await.unwrap();
let mut key_update = KeyUpdater::new(new_key);
key_update.with_name(&name);

let key = client.update_key(key_update).await.unwrap();
assert_eq!(key.name, Some(name));
source

pub async fn get_version(&self) -> Result<Version, Error>

Get version of the Meilisearch server.

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let version = client.get_version().await.unwrap();
source

pub async fn wait_for_task(
&self,
task_id: impl AsRef<u32>,
interval: Option<Duration>,
timeout: Option<Duration>
) -> Result<Task, Error>

Wait until Meilisearch processes a Task, and get its status.

interval = The frequency at which the server should be polled. Default = 50ms timeout = The maximum time to wait for processing to complete. Default = 5000ms

If the waited time exceeds timeout then an Error::Timeout will be returned.

See also [Index::wait_for_task, Task::wait_for_completion, TaskInfo::wait_for_completion].

Example
let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
let movies = client.index("movies_client_wait_for_task");

let task = movies.add_documents(&[
    Document { id: 0, kind: "title".into(), value: "The Social Network".to_string() },
    Document { id: 1, kind: "title".into(), value: "Harry Potter and the Sorcerer's Stone".to_string() },
], None).await.unwrap();

let status = client.wait_for_task(task, None, None).await.unwrap();

assert!(matches!(status, Task::Succeeded { .. }));
source

pub async fn get_task(&self, task_id: impl AsRef<u32>) -> Result<Task, Error>

Get a task from the server given a task id.

Example
let task = index.delete_all_documents().await.unwrap();
let task = client.get_task(task).await.unwrap();
source

pub async fn get_tasks_with(
&self,
tasks_query: &TasksSearchQuery<'_>
) -> Result<TasksResults, Error>

Get all tasks with query parameters from the server.

Example

let mut query = tasks::TasksSearchQuery::new(&client);
query.with_index_uids(["get_tasks_with"]);
let tasks = client.get_tasks_with(&query).await.unwrap();
source

pub async fn cancel_tasks_with(
&self,
filters: &TasksCancelQuery<'_>
) -> Result<TaskInfo, Error>

Cancel tasks with filters TasksCancelQuery

Example

let mut query = tasks::TasksCancelQuery::new(&client);
query.with_index_uids(["movies"]);

let res = client.cancel_tasks_with(&query).await.unwrap();
source

pub async fn delete_tasks_with(
&self,
filters: &TasksDeleteQuery<'_>
) -> Result<TaskInfo, Error>

Delete tasks with filters TasksDeleteQuery

Example

let mut query = tasks::TasksDeleteQuery::new(&client);
query.with_index_uids(["movies"]);

let res = client.delete_tasks_with(&query).await.unwrap();
source

pub async fn get_tasks(&self) -> Result<TasksResults, Error>

Get all tasks from the server.

Example
let tasks = client.get_tasks().await.unwrap();
source

pub fn generate_tenant_token(
&self,
api_key_uid: String,
search_rules: Value,
api_key: Option<&str>,
expires_at: Option<OffsetDateTime>
) -> Result<String, Error>

Generates a new tenant token.

Example
let api_key_uid = "76cf8b87-fd12-4688-ad34-260d930ca4f4".to_string();
let token = client.generate_tenant_token(api_key_uid, serde_json::json!(["*"]), None, None).unwrap();
let client = client::Client::new(MEILISEARCH_URL, token);
source§

impl Client

Dump related methods.
See the dumps module.

source

pub async fn create_dump(&self) -> Result<TaskInfo, Error>

Triggers a dump creation process. Once the process is complete, a dump is created in the dumps directory. If the dumps directory does not exist yet, it will be created.

Example
let task_info = client.create_dump().await.unwrap();
assert!(matches!(
   task_info,
   TaskInfo {
       update_type: TaskType::DumpCreation { .. },
       ..
   }
));

Trait Implementations§

source§

impl Clone for Client

source§

fn clone(&self) -> Client

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Client

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere
T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere
U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere
T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere
U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more