An Elixir flavored HTTP client and DSL library for building JSON based settings, mappings, queries to Elasticsearch engine.
Getting Started
- Add this to the
defp deps do
list in your mix.exs file:
{:tirexs, "~> 0.8"}
-
Also in mix.exs, add
:tirexs
to the:applications
list indef application
. -
In config/dev.exs, configure
tirexs
:# The default uri is http://127.0.0.1:9200 config :tirexs, :uri, "http://127.0.0.1:9200"
See lib/tirexs/env.ex for more configuration options.
-
Index a document:
import Tirexs.HTTP
put("/my_index/users/1", [name: "Jane", email: "jane@example.com"])
# {:ok, 201,
# %{_id: "1", _index: "my_index", _type: "users", _version: 1, created: true}}
- Fetch the document:
get("/my_index/users/1")
# {:ok, 200,
# %{_id: "1", _index: "my_index",
# _source: %{email: "jane@example.com", name: "Jane"}, _type: "users",
# _version: 1, found: true}}
- Simplified search:
get("/my_index/users/_search?q=name:jane")
# {:ok, 200,
# %{_shards: %{failed: 0, successful: 5, total: 5},
# hits: %{hits: [%{_id: "1", _index: "my_index", _score: 0.30685282,
# _source: %{email: "jane@example.com", name: "Jane"}, _type: "users"}],
# max_score: 0.30685282, total: 1}, timed_out: false, took: 10}}
- Query DSL
import Tirexs.Search
query = search [index: "my_index"] do
query do
match "name", "jane"
end
end
# [search: [query: [match: [name: [query: "jane"]]]], index: "my_index"]
Tirexs.Query.create_resource(query)
# {:ok, 200,
# %{_shards: %{failed: 0, successful: 5, total: 5},
# hits: %{hits: [%{_id: "1", _index: "my_index", _score: 0.30685282,
# _source: %{email: "jane@example.com", name: "Jane"}, _type: "users"}],
# max_score: 0.30685282, total: 1}, timed_out: false, took: 5}}
Check out /examples directory as a quick intro.
tirexs is split into several layers
- Raw HTTP layer and API helpers
- Multiple operations in single call such as Bulk API and mget API
- DSL flavored helpers
Find out more in api reference
Not sure?
Look around using https://hex.pm/packages?search=elasticsearch... to find out some other packages.
Contributing
If you feel like porting or fixing something, please drop a pull request or issue tracker at GitHub! Check out the CONTRIBUTING.md for more details.
License
Tirexs
source code is released under Apache 2 License.
Check LICENSE and NOTICE files for more details. The project HEAD is https://github.com/zatvobor/tirexs.