Desi

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 tail # Show tail output from Elastic Search's log file
$ desi current # Show current version
$ desi current VERSION # Change the symlink pointing to current version
$ desi indices "^foo" # List all indices whose name match /^foo/
$ desi indices "^foo" --delete # Delete all matching indices
$ desi indices "^foo" --close # Close all matching indices
$ desi indices "bar$" --empty # Remove all records from the matching indices
Examples (command-line and Ruby)
Installing Elastic Search
$
$ desi install
* No release specified, will fetch latest.
* fetching release elasticsearch-1.0.1.tar.gz
[…]
$
$ desi install 0.90.12
* fetching release elasticsearch-0.90.12.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
)
$ desi list
Local ES installs in /home/me/elasticsearch (current one is tagged with '*'):
* elasticsearch-1.0.1 (/home/me/elasticsearch/elasticsearch-1.0.1)
- elasticsearch-1.0.0 (/home/me/elasticsearch/elasticsearch-1.0.0)
Desi::LocalInstall.new.releases.map(&:name)
Desi::LocalInstall.new.releases.detect(&:current?).version
Start a node instance and get the cluster's status
$ desi start
* Elastic Search 1.0.1 started
$ desi status
OK. Elastic Search cluster 'elasticsearch' (v1.0.1) is running on 1 node(s) with status yellow
# Start Elastic Search in the foreground
$ desi start -f
ES will be launched in the foreground
^C # Manual stop with Control-C
Elastic Search interrupted!
Desi::ProcessManager.new.start.status
List and delete some indices
$
$ desi indices
Indices from host http://127.0.0.1:9200 matching the pattern /.*/
foo
bar
baz
$
$ desi indices --host 129.168.1.42:9800 foo
Indices from host http://192.168.1.42:9800 matching the pattern /foo/
remotefoo1
remotefoo2
$
$ desi indices --delete "^ba"
The following indices from host http://127.0.0.1:9200 are now deleted
* bar
* baz
Desi::IndexManager.new.list
Desi::IndexManager.new.list("^b")
Desi::IndexManager.new(host: "192.168.1.42:9800").list
Desi::IndexManager.new.delete!("^ba")
Desi::IndexManager.new.list
Change setting(s)
There are two settings at the moment: location of the installation directory
(directory
, default: ~/elasticsearch
) and ES host address (server
,
default: localhost:9200
).
Desi will look for files /etc/desi.yml
or ~/.desi.yml
(the options found in
the former will be overriden by the ones found in the latter).
Desi.configure do |c|
c.directory = "~/local/foo"
c.server = "192.168.1.42:9200"
end
Installation
Add this line to your application's Gemfile:
gem 'desi'
And then execute:
$ bundle
Or install it yourself as:
$ gem install desi
TODO
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
)
- Commit your changes (
git commit -am 'Added some feature'
)
- Push to the branch (
git push origin my-new-feature
)
- Create new Pull Request