Class: Elasticsearch::Rails2::Response::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/elasticsearch/rails2/response/result.rb

Overview

Encapsulates the “hit” returned from the Elasticsearch client

Wraps the raw Hash with in a ‘Hashie::Mash` instance, providing access to the Hash properties by calling Ruby methods.

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Result

Returns a new instance of Result.

Parameters:

  • attributes (Hash) (defaults to: {})

    A Hash with document properties



16
17
18
# File 'lib/elasticsearch/rails2/response/result.rb', line 16

def initialize(attributes={})
  @result = Hashie::Mash.new(attributes)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *arguments) ⇒ Object

Delegate methods to ‘@result` or `@result._source`



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/elasticsearch/rails2/response/result.rb', line 34

def method_missing(name, *arguments)
  case
  when name.to_s.end_with?('?')
    @result.__send__(name, *arguments) || ( @result._source && @result._source.__send__(name, *arguments) )
  when @result.respond_to?(name)
    @result.__send__ name, *arguments
  when @result._source && @result._source.respond_to?(name)
    @result._source.__send__ name, *arguments
  else
    super
  end
end

Instance Method Details

#as_json(options = {}) ⇒ Object



55
56
57
# File 'lib/elasticsearch/rails2/response/result.rb', line 55

def as_json(options={})
  @result.as_json(options)
end

#idObject

Return document ‘_id` as `id`



22
23
24
# File 'lib/elasticsearch/rails2/response/result.rb', line 22

def id
  @result['_id']
end

#respond_to?(method_name, include_private = false) ⇒ Boolean

Respond to methods from ‘@result` or `@result._source`

Returns:

  • (Boolean)


49
50
51
52
53
# File 'lib/elasticsearch/rails2/response/result.rb', line 49

def respond_to?(method_name, include_private = false)
  @result.respond_to?(method_name.to_sym) || \
  @result._source && @result._source.respond_to?(method_name.to_sym) || \
  super
end

#typeObject

Return document ‘_type` as `_type`



28
29
30
# File 'lib/elasticsearch/rails2/response/result.rb', line 28

def type
  @result['_type']
end