Module: Chewy::Index::Actions::ClassMethods
- Defined in:
- lib/chewy/index/actions.rb
Instance Method Summary collapse
-
#create(*args) ⇒ Object
Creates index and applies mappings and settings.
-
#create!(*args) ⇒ Object
Creates index and applies mappings and settings.
-
#delete(suffix = nil) ⇒ Object
Deletes ES index.
-
#delete!(suffix = nil) ⇒ Object
Deletes ES index.
-
#exists? ⇒ Boolean
Checks index existance.
-
#purge(suffix = nil) ⇒ Object
Deletes and recreates index.
-
#purge!(suffix = nil) ⇒ Object
Deletes and recreates index.
-
#reset!(suffix = nil) ⇒ Object
Deletes, creates and imports data to the index.
Instance Method Details
#create(*args) ⇒ Object
Creates index and applies mappings and settings. Returns false in case of unsuccessful creation.
UsersIndex.create # creates index named `users`
Index name suffix might be passed optionally. In this case, method creates index with suffix and makes unsuffixed alias for it.
UsersIndex.create '01-2013' # creates index `uses_01-2013` and alias `users` for it
UsersIndex.create '01-2013', alias: false # creates index `uses_01-2013` only and no alias
Suffixed index names might be used for zero-downtime mapping change, for example. Description: (www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/).
33 34 35 36 37 |
# File 'lib/chewy/index/actions.rb', line 33 def create *args create! *args rescue Elasticsearch::Transport::Transport::Errors::BadRequest false end |
#create!(*args) ⇒ Object
Creates index and applies mappings and settings. Raises elasticsearch-ruby transport error in case of unsuccessfull creation.
UsersIndex.create! # creates index named `users`
Index name suffix might be passed optionally. In this case, method creates index with suffix and makes unsuffixed alias for it.
UsersIndex.create! '01-2014' # creates index `users_01-2014` and alias `users` for it
UsersIndex.create! '01-2014', alias: false # creates index `users_01-2014` only and no alias
Suffixed index names might be used for zero-downtime mapping change, for example. Description: (www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/).
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/chewy/index/actions.rb', line 55 def create! *args = args..reverse_merge!(alias: true) name = build_index_name(suffix: args.first) if Chewy::Runtime.version >= 1.1 body = index_params body.merge!(aliases: {index_name => {}}) if [:alias] && name != index_name result = client.indices.create(index: name, body: body) else result = client.indices.create(index: name, body: index_params) result &&= client.indices.put_alias(index: name, name: index_name) if [:alias] && name != index_name end Chewy.wait_for_status if result result end |
#delete(suffix = nil) ⇒ Object
Deletes ES index. Returns false in case of error.
UsersIndex.delete # deletes `users` index
Supports index suffix passed as the first argument
UsersIndex.delete '01-2014' # deletes `users_01-2014` index
80 81 82 83 84 |
# File 'lib/chewy/index/actions.rb', line 80 def delete suffix = nil delete! suffix rescue Elasticsearch::Transport::Transport::Errors::NotFound false end |
#delete!(suffix = nil) ⇒ Object
Deletes ES index. Raises elasticsearch-ruby transport error in case of error.
UsersIndex.delete # deletes `users` index
Supports index suffix passed as the first argument
UsersIndex.delete '01-2014' # deletes `users_01-2014` index
95 96 97 98 99 |
# File 'lib/chewy/index/actions.rb', line 95 def delete! suffix = nil result = client.indices.delete index: build_index_name(suffix: suffix) Chewy.wait_for_status if result result end |
#exists? ⇒ Boolean
Checks index existance. Returns true or false
UsersIndex.exist? #=> true
14 15 16 |
# File 'lib/chewy/index/actions.rb', line 14 def exists? client.indices.exists(index: index_name) end |
#purge(suffix = nil) ⇒ Object
Deletes and recreates index. Supports suffixes. Returns result of index creation.
UsersIndex.purge # deletes and creates `users` index
UsersIndex.purge '01-2014' # deletes `users` and `users_01-2014` indexes, creates `users_01-2014`
107 108 109 110 111 |
# File 'lib/chewy/index/actions.rb', line 107 def purge suffix = nil delete if suffix.present? delete suffix create suffix end |
#purge!(suffix = nil) ⇒ Object
Deletes and recreates index. Supports suffixes. Returns result of index creation. Raises error in case of unsuccessfull creation
UsersIndex.purge! # deletes and creates `users` index
UsersIndex.purge! '01-2014' # deletes `users` and `users_01-2014` indexes, creates `users_01-2014`
120 121 122 123 124 125 126 127 |
# File 'lib/chewy/index/actions.rb', line 120 def purge! suffix = nil begin delete! if suffix.present? && exists? delete! suffix rescue Elasticsearch::Transport::Transport::Errors::NotFound end create! suffix end |
#reset!(suffix = nil) ⇒ Object
Deletes, creates and imports data to the index. Returns import result
UsersIndex.reset!
If index name suffix passed as the first argument - performs zero-downtime index resetting (described here: www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/).
UsersIndex.reset! Time.now.to_i
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/chewy/index/actions.rb', line 162 def reset! suffix = nil if suffix.present? && (indexes = self.indexes).any? create! suffix, alias: false result = import suffix: suffix client.indices.update_aliases body: {actions: [ *indexes.map do |index| {remove: {index: index, alias: index_name}} end, {add: {index: build_index_name(suffix: suffix), alias: index_name}} ]} client.indices.delete index: indexes if indexes.any? result else purge! suffix import end end |