Module: ElasticRecord::Index::Manage

Included in:
ElasticRecord::Index
Defined in:
lib/elastic_record/index/manage.rb

Instance Method Summary collapse

Instance Method Details

#aliased_namesObject



73
74
75
76
# File 'lib/elastic_record/index/manage.rb', line 73

def aliased_names
  json = connection.json_get '/_cluster/state'
  json["metadata"]["indices"].select { |name, status| status["aliases"].include?(alias_name) }.map { |name, status| name }
end

#all_namesObject



78
79
80
81
82
83
# File 'lib/elastic_record/index/manage.rb', line 78

def all_names
  json = connection.json_get '/_status'

  regex = %r{^#{alias_name}_?}
  json['indices'].keys.grep(regex)
end

#close(index_name) ⇒ Object



30
31
32
# File 'lib/elastic_record/index/manage.rb', line 30

def close(index_name)
  connection.json_post("/#{index_name}/_close")
end

#create(index_name = new_index_name) ⇒ Object



10
11
12
13
14
# File 'lib/elastic_record/index/manage.rb', line 10

def create(index_name = new_index_name)
  connection.json_put "/#{index_name}", "settings" => settings
  update_mapping(index_name)
  index_name
end

#create_and_deploy(index_name = new_index_name) ⇒ Object



4
5
6
7
8
# File 'lib/elastic_record/index/manage.rb', line 4

def create_and_deploy(index_name = new_index_name)
  create(index_name)
  deploy(index_name)
  index_name
end

#delete(index_name) ⇒ Object



16
17
18
# File 'lib/elastic_record/index/manage.rb', line 16

def delete(index_name)
  connection.json_delete "/#{index_name}"
end

#delete_allObject



20
21
22
23
24
# File 'lib/elastic_record/index/manage.rb', line 20

def delete_all
  all_names.each do |index_name|
    delete index_name
  end
end

#deploy(index_name) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/elastic_record/index/manage.rb', line 42

def deploy(index_name)
  actions = [
    {
      add: {
        "index" => index_name,
        "alias" => alias_name
      }
    }
  ]

  (aliased_names - [index_name]).each do |index_to_remove|
    actions << {
      remove: {
        "index" => index_to_remove,
        "alias" => alias_name
      }
    }
  end

  connection.json_post '/_aliases', actions: actions
end

#exists?(index_name) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/elastic_record/index/manage.rb', line 34

def exists?(index_name)
  connection.head("/#{index_name}") == '200'
end

#open(index_name) ⇒ Object



26
27
28
# File 'lib/elastic_record/index/manage.rb', line 26

def open(index_name)
  connection.json_post("/#{index_name}/_open")
end

#refresh(index_name = alias_name) ⇒ Object



64
65
66
# File 'lib/elastic_record/index/manage.rb', line 64

def refresh(index_name = alias_name)
  connection.json_post "/#{index_name}/_refresh"
end

#resetObject



68
69
70
71
# File 'lib/elastic_record/index/manage.rb', line 68

def reset
  delete_all
  create_and_deploy
end

#type_exists?(index_name = alias_name) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/elastic_record/index/manage.rb', line 38

def type_exists?(index_name = alias_name)
  connection.head("/#{index_name}/#{type}") == '200'
end