The elasticsearch-model
Rubygem
provides integration with Ruby domain objects ("models"), commonly found e.g. in Ruby on Rails applications.
It uses the elasticsearch
Rubygem as the client communicating with the Elasticsearch cluster.
-
ActiveModel integration with adapters for ActiveRecord and Mongoid
-
Enumerable-based wrapper for search results
-
ActiveRecord::Relation-based wrapper for returning search results as records
-
Convenience model methods such as
search
,mapping
,import
, etc -
Support for Kaminari and WillPaginate pagination
-
Extension implemented via proxy object to shield model namespace from collisions
-
Convenience methods for (re)creating the index, setting up mappings, indexing documents, …
Add the library to your Gemfile:
gem 'elasticsearch-rails'
Include the extension module in your model class:
class Article < ActiveRecord::Base
include Elasticsearch::Model
end
Import some data and perform a search:
Article.import
response = Article.search 'fox dog'
response.took
# => 3
It is possible to either return results as model instances, or decorated documents from Elasticsearch,
with the records
and results
methods, respectively:
response.records.first
# Article Load (0.4ms) SELECT "articles".* FROM "articles" WHERE ...
=> #<Article id: 3, title: "Foo " ...>
response.results.first._score
# => 0.02250402
response.results.first._source.title
# => "Quick brown fox"
Please see the full documentation for more information.