/elasticsearch-crystal

Converting the Ruby Elasticsearch Library to Crystal

Primary LanguageCrystalMIT LicenseMIT

Travis

Elasticsearch-crystal

Elasticsearch Library for Crystal Lang. Heavily inspired by Ruby Elasticsearch Library.

Installation

dependencies:
  elasticsearch-crystal:
    github: paktek123/elasticsearch-crystal
    version: ~> 0.11

Usage

require "elasticsearch-crystal/elasticsearch/api"

client = Elasticsearch::API::Client.new({:host => "localhost", :port => 9250})

# create an index
client.indices.create({:index => "test_index", :body => {"mappings" => {"type_1" => {} of String => String}}})
client.cat.indices

# For getting back JSON 

client.cat.indices({:format => "json"}).as(JSON::Any)

For more example see under the test folder

Roadmap

Right now this although covers most of the Elasticsearch API, still lacks certain functionality. The next features will be driven by community demand.

  • Make the repo more 'Crystal' Lang style, it follows ruby conventions or no conventions at all right now
  • Code is a bit repetitive in places
  • Same functionality as the Ruby Elasticsearch Library

Issues and Bugs

Although there is a test suite of Elasticsearch there are bound to be many bugs. Please raise an issue with steps to reproduce and any stack traces. Contributions are welcome to fix.

Contribute

Contributions are welcome!

  • Run a local Elasticsearch on port 9250: docker run -d -p 9250:9200 elasticsearch:5.2

  • Run the test suite interested in crystal spec test/integation/cat/*

  • Fork the repo and work on your feature in a branch

  • Make a PR