Class: Elasticated::Document

Inherits:
Object
  • Object
show all
Includes:
Mixins::BlockEvaluation, Mixins::Inspectionable
Defined in:
lib/elasticated/document.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins::BlockEvaluation

#evaluate

Methods included from Mixins::Inspectionable

#inspect

Constructor Details

#initialize(source = nil) ⇒ Document

Returns a new instance of Document.



35
36
37
# File 'lib/elasticated/document.rb', line 35

def initialize(source=nil)
  self.source = source if source
end

Instance Attribute Details

#document_sourceObject

Returns the value of attribute document_source.



33
34
35
# File 'lib/elasticated/document.rb', line 33

def document_source
  @document_source
end

#idObject

Returns the value of attribute id.



33
34
35
# File 'lib/elasticated/document.rb', line 33

def id
  @id
end

#indexObject

Returns the value of attribute index.



33
34
35
# File 'lib/elasticated/document.rb', line 33

def index
  @index
end

#scoreObject

Returns the value of attribute score.



33
34
35
# File 'lib/elasticated/document.rb', line 33

def score
  @score
end

#typeObject

Returns the value of attribute type.



33
34
35
# File 'lib/elasticated/document.rb', line 33

def type
  @type
end

#versionObject

Returns the value of attribute version.



33
34
35
# File 'lib/elasticated/document.rb', line 33

def version
  @version
end

Class Method Details

.create(opts = {}, &block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/elasticated/document.rb', line 6

def create(opts={}, &block)
  raise if block && !opts.empty?
  ret = new
  if opts.empty?
    ret.evaluate block
  else
    opts.each{ |k, v| ret.send "#{k}=", v if v }
  end
  ret
end

.parse(hit) ⇒ Object Also known as: from_elasticsearch_hit



17
18
19
20
21
22
23
24
25
# File 'lib/elasticated/document.rb', line 17

def parse(hit)
  document = new hit['_source']
  document.id = hit['_id']
  document.type = hit['_type']
  document.index = hit['_index']
  document.score = hit['_score']
  document.version = hit['_version']
  document
end

Instance Method Details

#sourceObject



43
44
45
# File 'lib/elasticated/document.rb', line 43

def source
  self.document_source ||= Hash::Accessible.new
end

#source=(hash) ⇒ Object



39
40
41
# File 'lib/elasticated/document.rb', line 39

def source=(hash)
  self.document_source = Hash::Accessible.new hash
end

#text_for_inspectObject



47
48
49
50
51
52
# File 'lib/elasticated/document.rb', line 47

def text_for_inspect
  text = "#{index}/#{type}/#{id}"
  text = "#{text} v#{version}" if version
  text = "#{text} scoring #{score}" if score
  text
end

#to_hObject



54
55
56
57
58
59
60
61
62
63
# File 'lib/elasticated/document.rb', line 54

def to_h
  {
    _id: id,
    _type: type,
    _index: index,
    _score: score,
    _version: version,
    _source: source.to_h
  }
end