Class: Polipus::ElasticSearch::Page
- Inherits:
-
Object
- Object
- Polipus::ElasticSearch::Page
- Includes:
- Elasticsearch::Model
- Defined in:
- lib/polipus-elasticsearch/index/page.rb
Constant Summary collapse
- DEFAULT_INDEX_NAME =
'polipus-pages'
Class Method Summary collapse
- .clear_index! ⇒ Object
- .client ⇒ Object
- .count ⇒ Object
- .create_index!(name) ⇒ Object
- .delete_index! ⇒ Object
- .exists?(id) ⇒ Boolean
- .get(id) ⇒ Object
- .index_exists? ⇒ Boolean
- .process_document(obj) ⇒ Object
- .properties ⇒ Object
- .remove(id, refresh = false) ⇒ Object
- .setup(client_, index_name = DEFAULT_INDEX_NAME) ⇒ Object
- .store(document, refresh = false) ⇒ Object
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 |
.client ⇒ Object
80 81 82 |
# File 'lib/polipus-elasticsearch/index/page.rb', line 80 def self.client __elasticsearch__.client end |
.count ⇒ Object
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
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
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 |
.properties ⇒ Object
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 |