Module: Elasticsearch::Persistence

Extended by:
ClassMethods
Defined in:
lib/elasticsearch/persistence.rb,
lib/elasticsearch/persistence/model.rb,
lib/elasticsearch/persistence/client.rb,
lib/elasticsearch/persistence/version.rb,
lib/elasticsearch/persistence/model/base.rb,
lib/elasticsearch/persistence/model/find.rb,
lib/elasticsearch/persistence/repository.rb,
lib/elasticsearch/persistence/model/rails.rb,
lib/elasticsearch/persistence/model/store.rb,
lib/elasticsearch/persistence/model/errors.rb,
lib/elasticsearch/persistence/repository/find.rb,
lib/elasticsearch/persistence/repository/class.rb,
lib/elasticsearch/persistence/repository/store.rb,
lib/elasticsearch/persistence/repository/naming.rb,
lib/elasticsearch/persistence/repository/search.rb,
lib/elasticsearch/persistence/repository/serialize.rb,
lib/elasticsearch/persistence/repository/response/results.rb

Overview

Persistence for Ruby domain objects and models in Elasticsearch

‘Elasticsearch::Persistence` contains modules for storing and retrieving Ruby domain objects and models in Elasticsearch.

Repository

The repository patterns allows to store and retrieve Ruby objects in Elasticsearch.

require 'elasticsearch/persistence'

class Note
  def to_hash; {foo: 'bar'}; end
end

repository = Elasticsearch::Persistence::Repository.new

repository.save Note.new
# => {"_index"=>"repository", "_type"=>"note", "_id"=>"mY108X9mSHajxIy2rzH2CA", ...}

Customize your repository by including the main module in a Ruby class

class MyRepository
  include Elasticsearch::Persistence::Repository

  index 'my_notes'
  klass Note

  client Elasticsearch::Client.new log: true
end

repository = MyRepository.new

repository.save Note.new
# 2014-04-04 22:15:25 +0200: POST http://localhost:9200/my_notes/note [status:201, request:0.009s, query:n/a]
# 2014-04-04 22:15:25 +0200: > {"foo":"bar"}
# 2014-04-04 22:15:25 +0200: < {"_index":"my_notes","_type":"note","_id":"-d28yXLFSlusnTxb13WIZQ", ...}

Model

The active record pattern allows to use the interface familiar from ActiveRecord models:

require 'elasticsearch/persistence'

class Article
  attribute :title, String, mapping: { analyzer: 'snowball' }
end

article = Article.new id: 1, title: 'Test'
article.save

Article.find(1)

article.update_attributes title: 'Update'

article.destroy

Defined Under Namespace

Modules: ClassMethods, GatewayDelegation, Model, Repository

Constant Summary collapse

VERSION =
"0.1.8"

Method Summary

Methods included from ClassMethods

client, client=