Class: Polipus::ElasticSearch::Page

Inherits:
Object
  • Object
show all
Includes:
Elasticsearch::Model
Defined in:
lib/polipus-elasticsearch/index/page.rb

Constant Summary collapse

DEFAULT_INDEX_NAME =
'polipus-pages'

Class Method Summary collapse

Class Method Details

.clear_index!Object



93
94
95
96
97
98
# File 'lib/polipus-elasticsearch/index/page.rb', line 93

def self.clear_index!
  client.delete_by_query(
    index: index_name,
     body: { query: { match_all: {} } }
  )
end

.clientObject



80
81
82
# File 'lib/polipus-elasticsearch/index/page.rb', line 80

def self.client
  __elasticsearch__.client
end

.countObject



84
85
86
# File 'lib/polipus-elasticsearch/index/page.rb', line 84

def self.count
  client.count(index: index_name, type: document_type)['count'].to_i
end

.create_index!(name) ⇒ Object



88
89
90
91
# File 'lib/polipus-elasticsearch/index/page.rb', line 88

def self.create_index!(name)
  index_name(name) unless name.nil?
  __elasticsearch__.create_index!(index: index_name)
end

.delete_index!Object



100
101
102
# File 'lib/polipus-elasticsearch/index/page.rb', line 100

def self.delete_index!
  client.indices.delete(index: index_name)
end

.exists?(id) ⇒ Boolean

Returns:

  • (Boolean)


104
105
106
107
108
109
110
# File 'lib/polipus-elasticsearch/index/page.rb', line 104

def self.exists?(id)
  client.exists?(
    index: index_name,
    type: document_type,
    id: id
  )
end

.get(id) ⇒ Object



112
113
114
115
116
117
118
119
# File 'lib/polipus-elasticsearch/index/page.rb', line 112

def self.get(id)
  return unless exists?(id)
  client.get_source(
    index: index_name,
    type: document_type,
    id: id
  )
end

.index_exists?Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/polipus-elasticsearch/index/page.rb', line 121

def self.index_exists?
  client.indices.exists?(index: index_name)
end

.process_document(obj) ⇒ Object



125
126
127
128
129
130
131
# File 'lib/polipus-elasticsearch/index/page.rb', line 125

def self.process_document(obj)
  doc = { '_type' => document_type }
  properties.each do |p|
    doc[p.to_s] = obj.respond_to?(p.to_s) ? obj.send(p.to_s) : obj[p.to_s]
  end
  doc.reject { |_, value| value.nil? }
end

.propertiesObject



133
134
135
# File 'lib/polipus-elasticsearch/index/page.rb', line 133

def self.properties
  mapping.to_hash[document_type.to_sym][:properties].keys.map { |k| k.to_s }
end

.remove(id, refresh = false) ⇒ Object



137
138
139
140
141
142
143
144
145
146
147
# File 'lib/polipus-elasticsearch/index/page.rb', line 137

def self.remove(id, refresh = false)
  return unless exists?(id)
  client.delete(
    index: index_name,
    type: document_type,
    id: id,
    refresh: refresh,
    version: Time.now.to_i,
    version_type: :external
  )
end

.setup(client_, index_name = DEFAULT_INDEX_NAME) ⇒ Object



149
150
151
152
# File 'lib/polipus-elasticsearch/index/page.rb', line 149

def self.setup(client_, index_name = DEFAULT_INDEX_NAME)
  __elasticsearch__.client = client_
  self.index_name(index_name)
end

.store(document, refresh = false) ⇒ Object



154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/polipus-elasticsearch/index/page.rb', line 154

def self.store(document, refresh = false)
  document = process_document(document)
  client.index(
    index: index_name,
    type: document_type,
    id: document['id'],
    body: document,
    refresh: refresh,
    version: document['fetched_at'].to_i,
    version_type: :external
  )
  document['id']
end