Class: Scalastic::PartitionsClient
- Inherits:
-
Object
- Object
- Scalastic::PartitionsClient
- Includes:
- Enumerable
- Defined in:
- lib/scalastic/partitions_client.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#es_client ⇒ Object
readonly
Returns the value of attribute es_client.
Instance Method Summary collapse
- #[](id) ⇒ Object
- #create(args = {}) ⇒ Object
- #delete(args = {}) ⇒ Object
- #each(&_block) ⇒ Object
-
#initialize(es_client, config = Config.default.dup) ⇒ PartitionsClient
constructor
A new instance of PartitionsClient.
- #prepare_index(args) ⇒ Object
Constructor Details
#initialize(es_client, config = Config.default.dup) ⇒ PartitionsClient
Returns a new instance of PartitionsClient.
11 12 13 14 15 16 |
# File 'lib/scalastic/partitions_client.rb', line 11 def initialize(es_client, config = Config.default.dup) raise(ArgumentError, 'ES client is nil') if es_client.nil? raise(ArgumentError, 'Config is nil') if config.nil? @es_client = es_client @config = config end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
9 10 11 |
# File 'lib/scalastic/partitions_client.rb', line 9 def config @config end |
#es_client ⇒ Object (readonly)
Returns the value of attribute es_client.
8 9 10 |
# File 'lib/scalastic/partitions_client.rb', line 8 def es_client @es_client end |
Instance Method Details
#[](id) ⇒ Object
39 40 41 |
# File 'lib/scalastic/partitions_client.rb', line 39 def [](id) Partition.new(es_client, config, id) end |
#create(args = {}) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/scalastic/partitions_client.rb', line 18 def create(args = {}) actions = [ {add: EsActionsGenerator.new_search_alias(config, args)}, {add: EsActionsGenerator.new_index_alias(config, args)}, ] es_client.indices.update_aliases(body: {actions: actions}) self[args[:id]] end |
#delete(args = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/scalastic/partitions_client.rb', line 27 def delete(args = {}) id = args[:id].to_s raise(ArgumentError, 'Missing required argument :id') if id.nil? || id.empty? pairs = es_client.indices.get_aliases.map{|i, d| d['aliases'].keys.select{|a| config.get_partition_id(a) == id}.map{|a| [i, a]}}.flatten(1) unless pairs.any? #TODO: log a warning return end actions = pairs.map{|i, a| {remove: {index: i, alias: a}}} es_client.indices.update_aliases(body: {actions: actions}) end |
#each(&_block) ⇒ Object
43 44 45 |
# File 'lib/scalastic/partitions_client.rb', line 43 def each(&_block) partition_ids.each{|pid| yield Partition.new(es_client, config, pid) if block_given?} end |
#prepare_index(args) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/scalastic/partitions_client.rb', line 47 def prepare_index(args) index = args[:index] || raise(ArgumentError, 'Missing required argument :index') mapping = {properties: config.partition_selector_mapping} es_client.indices.put_mapping(index: index, type: '_default_', body: {'_default_' => mapping}) es_client.indices.put_mapping(index: index, type: 'scalastic', body: {'scalastic' => mapping}) end |