Skip to content
/ desi Public
forked from af83/desi

Desi (Developper ElasticSearch Installer) is very simple tool to quickly set up an Elastic Search local install for development purposes.

License

Notifications You must be signed in to change notification settings

karmi/desi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desi

Build Status

Desi (Developper ElasticSearch Installer) is very simple tool to quickly set up an Elastic Search local install for development purposes.

It can:

  • download and install ElasticSearch (the latest release by default)
  • start/stop/restart it.
  • do basic indices management (list, delete, empty a given set of indices)

It can be used both as a command-line tool and as a library.

Usage (command-line)

$ desi list                  # List locally installed ElasticSearch releases
$ desi releases              # List all upstream Elastic Search releases (latest 5 by default)
$ desi install [VERSION]     # Install a specific version (latest by default)
$ desi start                 # Start a local 1-node cluster (noop if active)
$ desi restart               # (Re)start cluster (even if active)
$ desi stop                  # Stop cluster
$ desi status [--host HOST]  # Show running cluster info

$ desi indices "^foo"          # List all indices whose name match /^foo/
$ desi indices "^foo" --delete # Delete all matching indices
$ desi indices "bar$" --empty  # Remove all records from the matching indices

Examples (command-line and Ruby)

Installing Elastic Search

$ # The latest version will be installed by default
$ desi install
* No release specified, will fetch latest.
* fetching release elasticsearch-0.19.9.tar.gz
[…]

$ # You can also give a specific release name
$ desi install 0.19.6 # ("v0.19.6" or "elasticsearch-0.19.6" would also work)
* fetching release elasticsearch-0.19.6.tar.gz
[…]

Get the list of locally installed releases

The current version is the one symlinked to $HOME/elasticsearch/current, that will be spun up by (desi start)

  • command-line
$ desi list
Local ES installs (current one is tagged with '*'):
  * elasticsearch-0.19.9 (/home/me/elasticsearch/elasticsearch-0.19.9)
  - elasticsearch-0.19.8 (/home/me/elasticsearch/elasticsearch-0.19.8)
  • library
Desi::LocalInstall.new.releases.map(&:name) #=> ["elasticsearch-0.19.8", "elasticsearch-0.19.9"]
Desi::LocalInstall.new.releases.detect(&:current?).version #=> "0.19.9"

Start a node instance and get the cluster's status

  • command-line
$ desi start
 * Elastic Search 0.19.9 started
$ desi status
OK. Elastic Search cluster 'elasticsearch' (v0.19.9) is running on 1 node(s) with status yellow
  • library
Desi::ProcessManager.new.start.status #=> "OK. Elastic Search cluster 'elasticsearch' (v0.19.9) is running on 1 node(s) with status green"

List and delete some indices

  • command-line
$ # List all local indices
$ desi indices
  Indices from host http://127.0.0.1:9200 matching the pattern /.*/

  foo
  bar
  baz

$ # List all indices with "foo" in their name on remote cluster 129.168.1.42, port 9800
$ desi indices --host 129.168.1.42:9800 foo
  Indices from host http://192.168.1.42:9800 matching the pattern /foo/

  remotefoo1
  remotefoo2

$ # Remove all indices whose name starts with "ba"
$ desi indices --delete "^ba"
The following indices from host http://127.0.0.1:9200 are now deleted
 * bar
 * baz
  • library
# All local indices
Desi::IndexManager.new.list #=> ["foo", "bar", "baz"]

# All local indices whose name starts with "b"
Desi::IndexManager.new.list("^b") #=> ["bar", "baz"]

# All indices from distant cluster
Desi::IndexManager.new(host: "192.168.1.42:9800").list #=> ["remotefoo1", "remotefoo2"]

# Delete all local indices whose name starts with "ba"
Desi::IndexManager.new.delete!("^ba") #=> nil

# The indices actually disappeared! \o/
Desi::IndexManager.new.list #=> ["foo"]

Installation

Add this line to your application's Gemfile:

gem 'desi'

And then execute:

$ bundle

Or install it yourself as:

$ gem install desi

TODO

  • add more tests

  • desi upgrade (Upgrade to latest version and migrate data)

  • desi switch VERSION (Switch currently active ES version to VERSION)

  • plugin management ? (list, install, remove ES plugins)

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

About

Desi (Developper ElasticSearch Installer) is very simple tool to quickly set up an Elastic Search local install for development purposes.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%