View Source ExTypesense.Collection (ExTypesense v0.7.3)
Module for creating, listing and deleting collections and aliases.
In Typesense, a Collection is a group of related Documents that is roughly equivalent to a table in a relational database. When we create a collection, we give it a name and describe the fields that will be indexed when a document is added to the collection.
Summary
Functions
Create collection from a map, or module name. Collection name is matched on table name if using Ecto schema by default.
Deletes a collection alias. The collection itself is not affected by this action.
Permanently drops a collection by collection name or module name.
Get a specific collection by string or module name.
Get a specific collection alias by string or module name.
Get the collection name by alias.
List all aliases and the corresponding collections that they map to.
Lists all collections.
Make changes in a collection's fields: adding, removing
or updating an existing field(s). Key name is drop
to
indicate which field is removed (example described below).
Only fields
can only be updated at the moment.
Upserts a collection alias.
Types
Functions
@spec create_collection(ExTypesense.Connection.t(), schema :: module() | map()) :: response()
Create collection from a map, or module name. Collection name is matched on table name if using Ecto schema by default.
Please refer to these list of schema params.
Examples
iex> schema = %{
...> name: "companies",
...> fields: [
...> %{name: "company_name", type: "string"},
...> %{name: "companies_id", type: "int32"},
...> %{name: "country", type: "string", facet: true}
...> ],
...> default_sorting_field: "companies_id"
...> }
iex> ExTypesense.create_collection(schema)
%ExTypesense.Collection{
created_at: 1234567890,
default_sorting_field: "companies_id",
fields: [...],
name: "companies",
num_documents: 0,
symbols_to_index: [],
token_separators: []
}
iex> ExTypesense.create_collection(Person)
%ExTypesense.Collection{
created_at: 1234567890,
default_sorting_field: "persons_id",
fields: [...],
name: "persons",
num_documents: 0,
symbols_to_index: [],
token_separators: []
}
delete_collection_alias(conn \\ Connection.new(), alias_name)
View Source (since 0.1.0)@spec delete_collection_alias(ExTypesense.Connection.t(), String.t() | module()) :: response()
Deletes a collection alias. The collection itself is not affected by this action.
@spec drop_collection(ExTypesense.Connection.t(), name :: String.t() | module()) :: response()
Permanently drops a collection by collection name or module name.
Note: dropping a collection does not remove the referenced alias, only the indexed documents.
@spec get_collection(ExTypesense.Connection.t(), String.t() | module()) :: response()
Get a specific collection by string or module name.
get_collection_alias(conn \\ Connection.new(), alias_name)
View Source (since 0.1.0)@spec get_collection_alias(ExTypesense.Connection.t(), String.t() | module()) :: response()
Get a specific collection alias by string or module name.
get_collection_name(conn \\ Connection.new(), alias_name)
View Source (since 0.3.0)@spec get_collection_name(ExTypesense.Connection.t(), String.t() | module()) :: String.t()
Get the collection name by alias.
@spec list_collection_aliases(ExTypesense.Connection.t()) :: response()
List all aliases and the corresponding collections that they map to.
@spec list_collections(ExTypesense.Connection.t()) :: response()
Lists all collections.
update_collection_fields(conn \\ Connection.new(), name, fields \\ %{})
View Source (since 0.1.0)@spec update_collection_fields( ExTypesense.Connection.t(), name :: String.t() | module(), map() ) :: response()
Make changes in a collection's fields: adding, removing
or updating an existing field(s). Key name is drop
to
indicate which field is removed (example described below).
Only fields
can only be updated at the moment.
Note: Typesense supports updating all fields except the
id
field (since it's a special field within Typesense).
Examples
iex> fields = %{
...> fields: [
...> %{name: "num_employees", drop: true},
...> %{name: "company_category", type: "string"},
...> ],
...> }
iex> ExTypesense.update_collection_fields("companies", fields)
%ExTypesense.Collection{
created_at: 1234567890,
name: companies,
default_sorting_field: "companies_id",
fields: [...],
num_documents: 0,
symbols_to_index: [],
token_separators: []
}
upsert_collection_alias(conn \\ Connection.new(), alias_name, collection_name)
View Source (since 0.1.0)@spec upsert_collection_alias( ExTypesense.Connection.t(), String.t() | module(), String.t() ) :: response()
Upserts a collection alias.