Non Rails-specific
Gem elasticsearch-transport
Provides a bare-bones HTTP client that doesn’t have any Elasticsearch-specific api methods, but knows how to discover and connect to multiple servers, rotate connections, and log things.
Gem elasticsearch-api
Provides a module that adds elasticsearch-specific methods such as search
, cluster
, index
to a generic HTTP client. Can be included in any class that implements method perform_request
which returns an object responding to status
, body
, headers
.
Gem elasticsearch
Depends on:
All it does is it takes an HTTP client from elasticsearch-transport and includes the Elasticsearch::API
module into it from elasticsearch-api, providing a more convenient client as a result.
Gem elasticsearch-dsl
Provides a tire-like syntax for defining queries. The resulting query object is useless on its own, but it supports to_hash
, and therefore can easily be fed into any HTTP client by encoding Hash as JSON. If you feed this object to the client from elasticsearch-transport, it will be automatically dumped as JSON using the default MultiJson serializer.
Gem elasticsearch-watcher
Depends on:
Extends Elasticsearch::API
with an extra method watcher
, which in turn provides methods specific for the Watcher plugin, such as put_watch
, get_watch
, and others.
Gem elasticsearch-extensions
Depends on:
Adds contributor-friendly features like terminal colorizers and formatters for Elasticsearch responses, cluster start/stop for testing, and profiling features for testing.
Rails-specific
Gem elasticsearch-model
Depends on:
This gem contains various modules to be included into models. It does nothing without explicit includes.
Module Elasticsearch::Model::Proxy
This module is useless on its own. It adds __elasticsearch__
method to a model at class and instance levels, which is supposed to isolate all elasticsearch functionality underneath it. However, the proxy object is actually empty, it has no methods, and it expects that all other modules will be manually included into it.
- module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/proxy.rb
Module Elasticsearch::Model::Client
Adds accessor client
to the model at both class and instance level. Default client comes from elasticsearch-transport.
- module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/client.rb
Module Elasticsearch::Model::Naming
Adds accessors index_name
and document_type
to the model at both class and instance level. Defaults are inferred from the model name.
- module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/naming.rb
Module Elasticsearch::Model::Indexing
Adds class methods settings
, mapping
, create_index!
, index_exists?
, delete_index!
, and refresh_index!
which can be used to define and manage field mappings. Index methods would implicitly use the previously defined mapping, as well as implicitly inferred index/document_type names. The module also adds instance methods index_document
, update_document
, and delete_document
that depend on model having as_indexed_json
, and id
to work.
- module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/indexing.rb
Module Elasticsearch::Model::Searching
Adds class level search
method that accepts a to_hash-compatible object, delegates to the search
method on the client. By default the client is coming from elasticsearch-transport.
- module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/searching.rb
Module Elasticsearch::Model::Serializing
Adds an instance method as_indexed_json
to a model, which by default delegates to as_json
with option root: false
.
module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/serializing.rb
Module Elasticsearch::Model::Importing
Provides class-level method import
allowing batches of records to be efficiently imported into Elasticsearch. This module automatically adapts for ActiveRecord and Mongoid.
module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/importing.rb
Module Elasticsearch::Model
When included, this module does 3 things.
- Includes Elasticsearch::Model::Proxy into the model.
- Includes the following modules into the
__elasticsearch__
proxy object.
- Elasticsearch::Model::Client
- Elasticsearch::Model::Naming
- Elasticsearch::Model::Indexing
- Elasticsearch::Model::Searching
- Elasticsearch::Model::Serializing
- Elasticsearch::Model::Importing
- Delegates some important methods from model class/instance to the
__elasticsearch__
proxy object, namelysearch
,mapping
,settings
,index_name
,document_type
,import
.
module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model.rb
Module Elasticsearch::Model::Callbacks
Adds callbacks that sync model and Elasticsearch representation on create/update/delete. The callbacks are blocking, if the syncing must be asynchronous it’s suggested to implement your own callbacks, and not use this module. This module automatically adapts for ActiveRecord and Mongoid.
module source/docs: elasticsearch-rails/elasticsearch-model/lib/elasticsearch/model/callbacks.rb
Gem elasticsearch-persistence
Depends on:
Provides a way to build models backed by Elasticsearch database, similar to ActiveRecord models being backed by SQL database. Additionally, provides a way of using Repository pattern to the same effect.
Gem elasticsearch-rails
Provides rake tasks for importing data from Rails models into Elasticsearch, as well as instrumentation for displaying search requests and their stats in logs. Includes special support for Lograge. Both rake tasks and instrumentation features must be manually required to function (no railtie support). Comes with multiple Rails application templates which allow the user to generate example applications locally, starting from a very simple integration, to a full-blown Elasticsearc-powered application, to demonstrate the gem capabilities and common usage patterns.