defmodule Elastix.Alias do
@moduledoc """
The alias API makes it possible to perform alias operations on indexes.
[Aliases documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html)
"""
import Elastix.HTTP, only: [prepare_url: 2]
alias Elastix.{HTTP, JSON}
@doc """
Excepts a list of actions for the `actions` parameter.
## Examples
iex> actions = [%{ add: %{ index: "test1", alias: "alias1" }}]
iex> Elastix.Alias.post("http://localhost:9200", actions)
{:ok, %HTTPoison.Response{...}}
"""
@spec post(elastic_url :: String.t(), actions :: list) :: HTTP.resp()
def post(elastic_url, actions) do
prepare_url(elastic_url, ["_aliases"])
|> HTTP.post(JSON.encode!(%{actions: actions}))
end
@doc """
Returns information about one or more index aliases.
## Examples
iex> Elastix.Alias.get("http://localhost:9200", "alias1")
{:ok, %HTTPoison.Response{...}}
"""
@spec get(elastic_url :: String.t(), name :: String.t()) :: HTTP.resp()
def get(elastic_url, name \\ "") do
prepare_url(elastic_url, ["_alias", name])
|> HTTP.get()
end
end