Module: Elasticsearch::Persistence

Extended by:
ActiveSupport::Autoload, Client::ClassMethods, QueryCache::CacheMethods
Defined in:
lib/elasticsearch/persistence.rb,
lib/rails/instrumentation.rb,
lib/rails/instrumentation/railtie.rb,
lib/elasticsearch/persistence/model.rb,
lib/elasticsearch/persistence/client.rb,
lib/elasticsearch/persistence/scoping.rb,
lib/elasticsearch/persistence/version.rb,
lib/elasticsearch/persistence/querying.rb,
lib/elasticsearch/persistence/relation.rb,
lib/elasticsearch/persistence/model/base.rb,
lib/elasticsearch/persistence/model/find.rb,
lib/elasticsearch/persistence/repository.rb,
lib/elasticsearch/persistence/inheritence.rb,
lib/elasticsearch/persistence/model/rails.rb,
lib/elasticsearch/persistence/model/store.rb,
lib/elasticsearch/persistence/query_cache.rb,
lib/elasticsearch/persistence/model/errors.rb,
lib/elasticsearch/persistence/null_relation.rb,
lib/elasticsearch/persistence/scoping/named.rb,
lib/elasticsearch/persistence/model/callbacks.rb,
lib/elasticsearch/persistence/relation/merger.rb,
lib/elasticsearch/persistence/repository/find.rb,
lib/elasticsearch/persistence/scoping/default.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/model/hash_wrapper.rb,
lib/elasticsearch/persistence/relation/delegation.rb,
lib/elasticsearch/persistence/repository/serialize.rb,
lib/elasticsearch/persistence/relation/query_builder.rb,
lib/elasticsearch/persistence/relation/query_methods.rb,
lib/elasticsearch/persistence/relation/spawn_methods.rb,
lib/elasticsearch/persistence/relation/finder_methods.rb,
lib/elasticsearch/persistence/model/gateway_delegation.rb,
lib/elasticsearch/persistence/repository/response/results.rb,
lib/elasticsearch/persistence/relation/search_option_methods.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: Client, Delegation, FinderMethods, GatewayDelegation, Inheritence, Instrumentation, Model, NullRelation, QueryCache, QueryMethods, Querying, Repository, Scoping, SearchOptionMethods, SpawnMethods Classes: QueryBuilder, Relation

Constant Summary collapse

VERSION =
"0.1.9"

Class Method Summary collapse

Methods included from Client::ClassMethods

client, client=

Methods included from QueryCache::CacheMethods

cache, setup_store!

Class Method Details

.eager_load!Object



148
149
150
151
# File 'lib/elasticsearch/persistence.rb', line 148

def self.eager_load!
  super
  Elasticsearch::Persistence::Scoping.eager_load!
end