ExTypesense.Analytics (ExTypesense v1.1.1)

View Source

Typesense can aggregate search queries for both analytics purposes and for query suggestions.

More here: https://typesense.org/docs/latest/api/analytics-query-suggestions.html

Summary

Functions

create_analytics_event(body)

(since 1.0.0)
@spec create_analytics_event(map()) ::
  {:ok, OpenApiTypesense.AnalyticsEventCreateResponse.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Create an analytics event

Sending events for analytics e.g rank search results based on popularity.

Examples

iex> body =
...>   %{
...>     "name" => event_name,
...>     "type" => "click",
...>     "data" => %{
...>       "q" => "nike_shoes",
...>       "doc_id" => "2468",
...>       "user_id" => "9903"
...>     }
...>   }
iex> ExTypesense.create_analytics_event(body)

create_analytics_event(body, opts)

(since 1.0.0)

Same as create_analytics_event/1

ExTypesense.create_analytics_event(body, [])

ExTypesense.create_analytics_event(%{api_key: xyz, host: ...}, body)

ExTypesense.create_analytics_event(OpenApiTypesense.Connection.new(), body)

create_analytics_event(conn, body, opts)

(since 1.0.0)

Same as create_analytics_event/2 but passes another connection.

ExTypesense.create_analytics_event(%{api_key: xyz, host: ...}, body, [])

ExTypesense.create_analytics_event(OpenApiTypesense.Connection.new(), body, [])

create_analytics_rule(body)

(since 1.0.0)
@spec create_analytics_rule(map()) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Creates an analytics rule

When an analytics rule is created, we give it a name and describe the type, the source collections and the destination collection.

Examples

iex> body = %{
...>   "name" => name,
...>   "type" => "counter",
...>   "params" => %{
...>     "source" => %{
...>       "collections" => ["products"],
...>       "events" => [
...>         %{"type" => "click", "weight" => 1, "name" => event_name}
...>       ]
...>     },
...>     "destination" => %{
...>       "collection" => "products",
...>       "counter_field" => "popularity"
...>     }
...>   }
...> }

iex> ExTypesense.create_analytics_rule(body)

create_analytics_rule(body, opts)

(since 1.0.0)
@spec create_analytics_rule(
  map() | OpenApiTypesense.Connection.t(),
  map() | keyword()
) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Same as create_analytics_rule/1

ExTypesense.create_analytics_rule(body, [])

ExTypesense.create_analytics_rule(%{api_key: xyz, host: ...}, body)

ExTypesense.create_analytics_rule(OpenApiTypesense.Connection.new(), body)

create_analytics_rule(conn, body, opts)

(since 1.0.0)
@spec create_analytics_rule(map() | OpenApiTypesense.Connection.t(), map(), keyword()) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Same as create_analytics_rule/2 but passes another connection.

ExTypesense.create_analytics_rule(%{api_key: xyz, host: ...}, body, [])

ExTypesense.create_analytics_rule(OpenApiTypesense.Connection.new(), body, [])

delete_analytics_rule(rule_name)

(since 1.0.0)
@spec delete_analytics_rule(String.t()) ::
  {:ok, OpenApiTypesense.AnalyticsRuleDeleteResponse.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Delete an analytics rule

Permanently deletes an analytics rule, given it's name

delete_analytics_rule(rule_name, opts)

(since 1.0.0)

Same as delete_analytics_rule/1

ExTypesense.delete_analytics_rule(rule_name, [])

ExTypesense.delete_analytics_rule(%{api_key: xyz, host: ...}, rule_name)

ExTypesense.delete_analytics_rule(OpenApiTypesense.Connection.new(), rule_name)

delete_analytics_rule(conn, rule_name, opts)

(since 1.0.0)

Same as delete_analytics_rule/2 but passes another connection.

ExTypesense.delete_analytics_rule(%{api_key: xyz, host: ...}, rule_name, [])

ExTypesense.delete_analytics_rule(OpenApiTypesense.Connection.new(), rule_name, [])

get_analytics_rule(rule_name)

(since 1.0.0)
@spec get_analytics_rule(String.t()) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Retrieve the details of an analytics rule, given it's name

get_analytics_rule(rule_name, opts)

(since 1.0.0)

Same as get_analytics_rule/1

ExTypesense.get_analytics_rule(rule_name, [])

ExTypesense.get_analytics_rule(%{api_key: xyz, host: ...}, rule_name)

ExTypesense.get_analytics_rule(OpenApiTypesense.Connection.new(), rule_name)

get_analytics_rule(conn, rule_name, opts)

(since 1.0.0)

Same as get_analytics_rule/2 but passes another connection.

ExTypesense.get_analytics_rule(%{api_key: xyz, host: ...}, rule_name, [])

ExTypesense.get_analytics_rule(OpenApiTypesense.Connection.new(), rule_name, [])

list_analytics_rules()

(since 1.0.0)
@spec list_analytics_rules() ::
  {:ok, OpenApiTypesense.AnalyticsRulesRetrieveSchema.t()} | :error

Retrieve the details of all analytics rules

list_analytics_rules(opts)

(since 1.0.0)
@spec list_analytics_rules(map() | OpenApiTypesense.Connection.t() | keyword()) ::
  {:ok, OpenApiTypesense.AnalyticsRulesRetrieveSchema.t()} | :error

Same as list_analytics_rules/0

ExTypesense.list_analytics_rules([])

ExTypesense.list_analytics_rules(%{api_key: xyz, host: ...})

ExTypesense.list_analytics_rules(OpenApiTypesense.Connection.new())

list_analytics_rules(conn, opts)

(since 1.0.0)
@spec list_analytics_rules(
  map() | OpenApiTypesense.Connection.t(),
  keyword()
) :: {:ok, OpenApiTypesense.AnalyticsRulesRetrieveSchema.t()} | :error

Same as list_analytics_rules/1 but passes another connection.

ExTypesense.list_analytics_rules(%{api_key: xyz, host: ...}, [])

ExTypesense.list_analytics_rules(OpenApiTypesense.Connection.new(), [])

upsert_analytics_rule(rule_name, body)

(since 1.0.0)
@spec upsert_analytics_rule(String.t(), map()) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

Upserts an analytics rule with the given name.

upsert_analytics_rule(rule_name, body, opts)

(since 1.0.0)
@spec upsert_analytics_rule(
  map() | OpenApiTypesense.Connection.t() | String.t(),
  String.t() | map(),
  map() | keyword()
) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}

upsert_analytics_rule(conn, rule_name, body, opts)

(since 1.0.0)
@spec upsert_analytics_rule(
  map() | OpenApiTypesense.Connection.t(),
  String.t(),
  map(),
  keyword()
) ::
  {:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
  | {:error, OpenApiTypesense.ApiResponse.t()}