This documentation contains work-in-progress information for future Elastic Stack and Cloud releases. Use the version selector to view supported release docs. It also contains some Elastic Cloud serverless information. Check out our serverless docs for more details.
ActiveModel / ActiveRecord
editActiveModel / ActiveRecord
editThe elasticsearch-model
Rubygem
provides integration with Ruby domain objects ("models"), commonly found for
example, in Ruby on Rails applications.
It uses the elasticsearch
Rubygem as the client communicating with the Elasticsearch
cluster.
Features
edit- 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, …
Usage
editAdd 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"
Consult the documentation for more information.