/tirexs

An Elixir flavored HTTP client and DSL library for Elasticsearch

Primary LanguageElixirOtherNOASSERTION

Build Status HEX version HEX downloads Deps Status

An Elixir flavored HTTP client and DSL library for building JSON based settings, mappings, queries to Elasticsearch engine.

Getting Started

  1. Add this to the defp deps do list in your mix.exs file:
{:tirexs, "~> 0.8"}
  1. Also in mix.exs, add :tirexs to the :applications list in def application.

  2. 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.

  3. 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}}
  1. 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}}
  1. 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}}
  1. 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.

Gitter

tirexs is split into several layers

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.

Analytics