module Flex::Result::Document
adds sugar to documents with the following structure (_source is optional):
{ "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_source" : { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "trying out Elastic Search" } }
Public Class Methods
should_extend?(obj)
click to toggle source
extend if result has a structure like a document
# File lib/flex/result/document.rb, line 20 def self.should_extend?(obj) %w[_index _type _id].all? {|k| obj.has_key?(k)} end
Public Instance Methods
index_basename()
click to toggle source
used to get the unprefixed (by live-reindex) index name
# File lib/flex/result/document.rb, line 49 def index_basename @index_basename ||= self['_index'].sub(/^\d{14}_/, '') end
method_missing(meth, *args, &block)
click to toggle source
exposes _source and readers: automatically supply object-like reader access also expose meta readers like _id, _source, etc, also callable without the leading ‘_’
Calls superclass method
# File lib/flex/result/document.rb, line 31 def method_missing(meth, *args, &block) smeth = meth.to_s case # field name when readers.has_key?(smeth) readers[smeth] # result item when has_key?(smeth) self[smeth] # result item called without the '_' prefix when has_key?("_#{smeth}") self["_#{smeth}"] else super end end
respond_to?(meth, private=false)
click to toggle source
Calls superclass method
# File lib/flex/result/document.rb, line 24 def respond_to?(meth, private=false) smeth = meth.to_s readers.has_key?(smeth) || has_key?(smeth) || has_key?("_#{smeth}") || super end
Private Instance Methods
readers()
click to toggle source
# File lib/flex/result/document.rb, line 56 def readers @readers ||= begin readers = (self['_source']||{}).merge(self['fields']||{}) # flattened reader for multi_readers or attachment readers readers.keys.each{|k| readers[k.gsub('.','_')] = readers.delete(k) if k.include?('.')} readers end end