Meili.Document (Meili v0.2.0)

Copy Markdown View Source

Manages Meilisearch documents in an index.

Summary

Functions

Adds or replaces documents in an index, raising on error.

Adds or updates documents in an index, raising on error.

Deletes a single document by its ID.

Deletes a single document by its ID, raising on error.

Deletes all documents in an index.

Deletes all documents in an index, raising on error.

Deletes a batch of documents by their IDs.

Deletes a batch of documents by their IDs, raising on error.

Edits documents using update functions/queries.

Gets a single document by its ID, raising on error.

Lists documents in an index, raising on error.

Returns a lazy stream of documents from an index.

Functions

add_or_replace(client_or_uid, uid_or_documents, documents_or_opts \\ [], opts \\ [])

@spec add_or_replace(
  Meili.Client.t() | String.t(),
  String.t() | [map()],
  [map()] | Keyword.t(),
  Keyword.t()
) :: {:ok, map()} | {:error, Meili.Error.t()}

Adds or replaces documents in an index.

Options:

  • primary_key or primaryKey: Explicit primary key for the index.

Examples

documents = [%{id: 1, title: "Star Wars"}]
Meili.Document.add_or_replace("movies", documents)
Meili.Document.add_or_replace(client, "movies", documents, primary_key: "id")

add_or_replace!(client_or_uid, uid_or_documents, documents_or_opts \\ [], opts \\ [])

@spec add_or_replace!(
  Meili.Client.t() | String.t(),
  String.t() | [map()],
  [map()] | Keyword.t(),
  Keyword.t()
) :: map() | no_return()

Adds or replaces documents in an index, raising on error.

Examples

documents = [%{id: 1, title: "Star Wars"}]
Meili.Document.add_or_replace!("movies", documents)
Meili.Document.add_or_replace!(client, "movies", documents)

add_or_update(client_or_uid, uid_or_documents, documents_or_opts \\ [], opts \\ [])

@spec add_or_update(
  Meili.Client.t() | String.t(),
  String.t() | [map()],
  [map()] | Keyword.t(),
  Keyword.t()
) :: {:ok, map()} | {:error, Meili.Error.t()}

Adds or updates documents in an index.

Options:

  • primary_key or primaryKey: Explicit primary key for the index.

Examples

documents = [%{id: 1, title: "Star Wars (Updated)"}]
Meili.Document.add_or_update("movies", documents)
Meili.Document.add_or_update(client, "movies", documents, primary_key: "id")

add_or_update!(client_or_uid, uid_or_documents, documents_or_opts \\ [], opts \\ [])

@spec add_or_update!(
  Meili.Client.t() | String.t(),
  String.t() | [map()],
  [map()] | Keyword.t(),
  Keyword.t()
) :: map() | no_return()

Adds or updates documents in an index, raising on error.

Examples

documents = [%{id: 1, title: "Star Wars (Updated)"}]
Meili.Document.add_or_update!("movies", documents)
Meili.Document.add_or_update!(client, "movies", documents)

delete(client_or_uid, uid_or_doc_id, doc_id_or_nil \\ nil)

@spec delete(
  Meili.Client.t() | String.t(),
  String.t() | integer(),
  String.t() | integer() | nil
) :: {:ok, map()} | {:error, Meili.Error.t()}

Deletes a single document by its ID.

Examples

Meili.Document.delete("movies", "123")
Meili.Document.delete(client, "movies", "123")

delete!(client_or_uid, uid_or_doc_id, doc_id_or_nil \\ nil)

@spec delete!(
  Meili.Client.t() | String.t(),
  String.t() | integer(),
  String.t() | integer() | nil
) :: map() | no_return()

Deletes a single document by its ID, raising on error.

Examples

Meili.Document.delete!("movies", "123")
Meili.Document.delete!(client, "movies", "123")

delete_all(client_or_uid, uid_or_nil \\ nil)

@spec delete_all(Meili.Client.t() | String.t(), String.t() | nil) ::
  {:ok, map()} | {:error, Meili.Error.t()}

Deletes all documents in an index.

Examples

Meili.Document.delete_all("movies")
Meili.Document.delete_all(client, "movies")

delete_all!(client_or_uid, uid_or_nil \\ nil)

@spec delete_all!(Meili.Client.t() | String.t(), String.t() | nil) ::
  map() | no_return()

Deletes all documents in an index, raising on error.

Examples

Meili.Document.delete_all!("movies")
Meili.Document.delete_all!(client, "movies")

delete_batch(client_or_uid, uid_or_doc_ids, doc_ids_or_nil \\ nil)

@spec delete_batch(Meili.Client.t() | String.t(), String.t() | list(), list() | nil) ::
  {:ok, map()} | {:error, Meili.Error.t()}

Deletes a batch of documents by their IDs.

Examples

Meili.Document.delete_batch("movies", ["123", "456"])
Meili.Document.delete_batch(client, "movies", ["123", "456"])

delete_batch!(client_or_uid, uid_or_doc_ids, doc_ids_or_nil \\ nil)

@spec delete_batch!(Meili.Client.t() | String.t(), String.t() | list(), list() | nil) ::
  map() | no_return()

Deletes a batch of documents by their IDs, raising on error.

Examples

Meili.Document.delete_batch!("movies", ["123", "456"])
Meili.Document.delete_batch!(client, "movies", ["123", "456"])

edit(client_or_uid, uid_or_queries, queries_or_opts \\ [], opts \\ [])

@spec edit(
  Meili.Client.t() | String.t(),
  String.t() | map(),
  map() | Keyword.t(),
  Keyword.t()
) ::
  {:ok, map()} | {:error, Meili.Error.t()}

Edits documents using update functions/queries.

Examples

queries = %{function: "doc.price = doc.price * 0.9"}
Meili.Document.edit("movies", queries)
Meili.Document.edit(client, "movies", queries)

edit!(client_or_uid, uid_or_queries, queries_or_opts \\ [], opts \\ [])

@spec edit!(
  Meili.Client.t() | String.t(),
  String.t() | map(),
  map() | Keyword.t(),
  Keyword.t()
) ::
  map() | no_return()

Edits documents, raising on error.

Examples

queries = %{function: "doc.price = doc.price * 0.9"}
Meili.Document.edit!("movies", queries)
Meili.Document.edit!(client, "movies", queries)

get(client_or_uid, uid_or_doc_id, doc_id_or_opts \\ [], opts \\ [])

@spec get(
  Meili.Client.t() | String.t(),
  String.t() | integer(),
  String.t() | integer() | Keyword.t(),
  Keyword.t()
) :: {:ok, map()} | {:error, Meili.Error.t()}

Gets a single document by its ID.

Options

  • fields: A list of fields to return, or a comma-separated string.

Examples

Meili.Document.get("movies", "123")
Meili.Document.get(client, "movies", "123", fields: ["title"])

get!(client_or_uid, uid_or_doc_id, doc_id_or_opts \\ [], opts \\ [])

@spec get!(
  Meili.Client.t() | String.t(),
  String.t() | integer(),
  String.t() | integer() | Keyword.t(),
  Keyword.t()
) :: map() | no_return()

Gets a single document by its ID, raising on error.

Examples

Meili.Document.get!("movies", "123")
Meili.Document.get!(client, "movies", "123")

list(client_or_uid, uid_or_opts \\ [], opts \\ [])

@spec list(Meili.Client.t() | String.t(), String.t() | Keyword.t(), Keyword.t()) ::
  {:ok, map()} | {:error, Meili.Error.t()}

Lists documents in an index.

Options

  • limit: Max number of documents to return.
  • offset: Number of documents to skip.
  • fields: A list of fields to return, or a comma-separated string.
  • filter: A filter expression to filter results.

Examples

Meili.Document.list("movies", limit: 10)
Meili.Document.list(client, "movies", limit: 10, fields: ["id", "title"])

list!(client_or_uid, uid_or_opts \\ [], opts \\ [])

@spec list!(Meili.Client.t() | String.t(), String.t() | Keyword.t(), Keyword.t()) ::
  map() | no_return()

Lists documents in an index, raising on error.

Examples

Meili.Document.list!("movies", limit: 10)
Meili.Document.list!(client, "movies", limit: 10)

stream(client_or_uid, uid_or_opts \\ [], opts \\ [])

@spec stream(Meili.Client.t() | String.t(), String.t() | Keyword.t(), Keyword.t()) ::
  Enumerable.t()

Returns a lazy stream of documents from an index.

It automatically handles pagination internally.

Options

  • limit: The page size (defaults to 1000).
  • Any other option passed is used to filter or customize list query parameters (e.g. fields, filter).

Examples

Meili.Document.stream("movies", fields: ["id", "title"])
|> Stream.map(& &1["title"])
|> Enum.to_list()