elasticsearch-extensions 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/README.md +16 -0
- data/elasticsearch-extensions.gemspec +7 -1
- data/lib/elasticsearch/extensions/backup.rb +142 -0
- data/lib/elasticsearch/extensions/test/cluster.rb +3 -1
- data/lib/elasticsearch/extensions/version.rb +1 -1
- data/test/backup/unit/backup_test.rb +75 -0
- metadata +93 -34
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NDU0NzFlZjRjYjU1M2RlZDdkNGUxMzMyYmUxMzc2MzhlYWExODdmNw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b3a84e8764023e5bf5d1ea21d93308eb3bfeafa0
|
4
|
+
data.tar.gz: 49f72a1364a104f0fbbe8fcf6a4986e4dd88121f
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NTgwMjllZjNhOTYzNGZiODg4YWNkODMzZjIyNDVkMGQyNTJkZTFiNTY1NTVi
|
11
|
-
NGQ2NDY4NTI2YjQyZjQxYzU1Y2JkM2E5ODZiNTUyMzRjZjQ4YTE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
N2JjZWE5NmJjYTk3YzU4YWQ3ODUwN2NjZDQ2Njg4MmM0NzQ4ODMwNTkxZDQ2
|
14
|
-
NmNiNTc0ODQ1OTNlMGQwZTIyNDQwNGI0ZWJmZjFjYmYzYWUzOWVmNzFjNWQ1
|
15
|
-
NzJmMDljNjk2NjExNGIwZmMzNDk2MGNjNTE1YjkzNjNjYWNhNTg=
|
6
|
+
metadata.gz: 7ac3d9463af301fbb315573d56217d6c1973d9f3e53a15544acaccaf51fe50ac3167583c255182e2176ea98fe2e56f3da4e1981f443ea653c144ebbb10c074b5
|
7
|
+
data.tar.gz: a9834e293e11e73a624978e16ec2a14b7ca540e0e0a04d33e9ac511f991508105cf6cd8e2c39dc6aa93d10a4322a50f749f750d500a6810d8ad05cdc653d886f
|
data/README.md
CHANGED
@@ -161,6 +161,22 @@ or install it from a source code checkout:
|
|
161
161
|
bundle install
|
162
162
|
rake install
|
163
163
|
|
164
|
+
## Development
|
165
|
+
|
166
|
+
To work on the code, clone and bootstrap the main repository first --
|
167
|
+
please see instructions in the main [README](../README.md#development).
|
168
|
+
|
169
|
+
To run tests, launch a testing cluster -- again, see instructions
|
170
|
+
in the main [README](../README.md#development) -- and use the Rake tasks:
|
171
|
+
|
172
|
+
```
|
173
|
+
time rake test:unit
|
174
|
+
time rake test:integration
|
175
|
+
```
|
176
|
+
|
177
|
+
Unit tests have to use Ruby 1.8 compatible syntax, integration tests
|
178
|
+
can use Ruby 2.x syntax and features.
|
179
|
+
|
164
180
|
## License
|
165
181
|
|
166
182
|
This software is licensed under the Apache 2 license, quoted below.
|
@@ -38,7 +38,8 @@ Gem::Specification.new do |s|
|
|
38
38
|
s.add_development_dependency "mocha"
|
39
39
|
s.add_development_dependency "turn"
|
40
40
|
s.add_development_dependency "yard"
|
41
|
-
s.add_development_dependency "
|
41
|
+
s.add_development_dependency "pry"
|
42
|
+
s.add_development_dependency "ci_reporter", "~> 1.9"
|
42
43
|
|
43
44
|
if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
|
44
45
|
s.add_development_dependency "json"
|
@@ -49,4 +50,9 @@ Gem::Specification.new do |s|
|
|
49
50
|
s.add_development_dependency "simplecov-rcov"
|
50
51
|
s.add_development_dependency "cane"
|
51
52
|
end
|
53
|
+
|
54
|
+
# Gems for testing integrations
|
55
|
+
s.add_development_dependency "backup", '~> 4'
|
56
|
+
s.add_development_dependency "patron"
|
57
|
+
s.add_development_dependency "oj"
|
52
58
|
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
require 'multi_json'
|
7
|
+
require 'oj'
|
8
|
+
|
9
|
+
require 'elasticsearch'
|
10
|
+
require 'patron'
|
11
|
+
|
12
|
+
module Backup
|
13
|
+
module Database
|
14
|
+
|
15
|
+
# Integration with the Backup gem [https://github.com/meskyanichi/backup/]
|
16
|
+
#
|
17
|
+
# This extension allows to backup Elasticsearch indices as flat JSON files on the disk.
|
18
|
+
#
|
19
|
+
# Use the Backup gem's DSL to configure the backup:
|
20
|
+
#
|
21
|
+
# require 'elasticsearch/extensions/backup'
|
22
|
+
#
|
23
|
+
# Model.new(:elasticsearch_backup, 'Elasticsearch') do
|
24
|
+
#
|
25
|
+
# database Elasticsearch do |db|
|
26
|
+
# # db.url = 'http://localhost:9200'
|
27
|
+
# # db.indices = 'articles,people'
|
28
|
+
# # db.size = 500
|
29
|
+
# # db.scroll = '10m'
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# store_with Local do |local|
|
33
|
+
# local.path = '/usr/local/var/backups'
|
34
|
+
# local.keep = 3
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# compress_with Gzip
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# Perform the backup with the Backup gem's command line utility:
|
41
|
+
#
|
42
|
+
# $ backup perform -t elasticsearch_backup
|
43
|
+
#
|
44
|
+
#
|
45
|
+
# A simple recover script could look like this:
|
46
|
+
#
|
47
|
+
# PATH = '/path/to/backup/'
|
48
|
+
#
|
49
|
+
# require 'elasticsearch'
|
50
|
+
# client = Elasticsearch::Client.new log: true
|
51
|
+
# payload = []
|
52
|
+
#
|
53
|
+
# Dir[ File.join( PATH, '**', '*.json' ) ].each do |file|
|
54
|
+
# document = MultiJson.load(File.read(file))
|
55
|
+
# item = document.merge(data: document['_source'])
|
56
|
+
# document.delete('_source')
|
57
|
+
# document.delete('_score')
|
58
|
+
#
|
59
|
+
# payload << { index: item }
|
60
|
+
#
|
61
|
+
# if payload.size == 100
|
62
|
+
# client.bulk body: payload
|
63
|
+
# payload = []
|
64
|
+
# end
|
65
|
+
#
|
66
|
+
# client.bulk body: payload
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# @see http://meskyanichi.github.io/backup/v4/
|
70
|
+
#
|
71
|
+
class Elasticsearch < Base
|
72
|
+
class Error < ::Backup::Error; end
|
73
|
+
|
74
|
+
attr_accessor :url,
|
75
|
+
:indices,
|
76
|
+
:size,
|
77
|
+
:scroll
|
78
|
+
|
79
|
+
attr_accessor :mode
|
80
|
+
|
81
|
+
def initialize(model, database_id = nil, &block)
|
82
|
+
super
|
83
|
+
|
84
|
+
@url ||= 'http://localhost:9200'
|
85
|
+
@indices ||= '_all'
|
86
|
+
@size ||= 100
|
87
|
+
@scroll ||= '10m'
|
88
|
+
@mode ||= 'single'
|
89
|
+
|
90
|
+
instance_eval(&block) if block_given?
|
91
|
+
end
|
92
|
+
|
93
|
+
def perform!
|
94
|
+
super
|
95
|
+
|
96
|
+
case mode
|
97
|
+
when 'single'
|
98
|
+
__perform_single
|
99
|
+
else
|
100
|
+
raise Error, "Unsupported mode [#{mode}]"
|
101
|
+
end
|
102
|
+
|
103
|
+
log!(:finished)
|
104
|
+
end
|
105
|
+
|
106
|
+
def client
|
107
|
+
@client ||= ::Elasticsearch::Client.new url: url, logger: logger
|
108
|
+
end
|
109
|
+
|
110
|
+
def path
|
111
|
+
Pathname.new File.join(dump_path , dump_filename.downcase)
|
112
|
+
end
|
113
|
+
|
114
|
+
def logger
|
115
|
+
logger = Backup::Logger.__send__(:logger)
|
116
|
+
logger.instance_eval do
|
117
|
+
def debug(*args);end
|
118
|
+
# alias :debug :info
|
119
|
+
alias :fatal :warn
|
120
|
+
end
|
121
|
+
logger
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
def __perform_single
|
126
|
+
r = client.search index: indices, search_type: 'scan', scroll: scroll, size: size
|
127
|
+
raise Error, "No scroll_id returned in response:\n#{r.inspect}" unless r['_scroll_id']
|
128
|
+
|
129
|
+
while r = client.scroll(scroll_id: r['_scroll_id'], scroll: scroll) and not r['hits']['hits'].empty? do
|
130
|
+
r['hits']['hits'].each do |hit|
|
131
|
+
FileUtils.mkdir_p "#{path.join hit['_index'], hit['_type']}"
|
132
|
+
File.open("#{path.join hit['_index'], hit['_type'], hit['_id']}.json", 'w') do |file|
|
133
|
+
file.write MultiJson.dump(hit)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
::Backup::Config::DSL::Elasticsearch = ::Backup::Database::Elasticsearch
|
@@ -76,7 +76,7 @@ module Elasticsearch
|
|
76
76
|
arguments[:es_params] ||= ENV['TEST_CLUSTER_PARAMS'] || ''
|
77
77
|
arguments[:path_work] ||= '/tmp'
|
78
78
|
arguments[:node_name] ||= 'node'
|
79
|
-
arguments[:timeout] ||= 30
|
79
|
+
arguments[:timeout] ||= (ENV['TEST_CLUSTER_TIMEOUT'] || 30).to_i
|
80
80
|
|
81
81
|
if running? :on => arguments[:port], :as => arguments[:cluster_name]
|
82
82
|
print "[!] Elasticsearch cluster already running".ansi(:red)
|
@@ -102,11 +102,13 @@ module Elasticsearch
|
|
102
102
|
-D es.index.store.type=#{arguments[:index_store]} \
|
103
103
|
-D es.path.data=#{arguments[:path_data]} \
|
104
104
|
-D es.path.work=#{arguments[:path_work]} \
|
105
|
+
-D es.cluster.routing.allocation.disk.threshold_enabled=false \
|
105
106
|
-D es.network.host=0.0.0.0 \
|
106
107
|
-D es.discovery.zen.ping.multicast.enabled=true \
|
107
108
|
-D es.script.disable_dynamic=false \
|
108
109
|
-D es.node.test=true \
|
109
110
|
-D es.node.bench=true \
|
111
|
+
-D es.logger.level=DEBUG \
|
110
112
|
#{arguments[:es_params]} \
|
111
113
|
> /dev/null
|
112
114
|
COMMAND
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
require 'backup'
|
4
|
+
|
5
|
+
require 'elasticsearch/extensions/backup'
|
6
|
+
|
7
|
+
class Elasticsearch::Extensions::BackupTest < Test::Unit::TestCase
|
8
|
+
context "The Backup gem extension" do
|
9
|
+
setup do
|
10
|
+
@model = ::Backup::Model.new(:test_trigger, 'test label')
|
11
|
+
@subject = ::Backup::Database::Elasticsearch.new(@model)
|
12
|
+
end
|
13
|
+
|
14
|
+
should "have a client" do
|
15
|
+
assert_instance_of Elasticsearch::Transport::Client, @subject.client
|
16
|
+
end
|
17
|
+
|
18
|
+
should "have a path" do
|
19
|
+
assert_instance_of Pathname, @subject.path
|
20
|
+
end
|
21
|
+
|
22
|
+
should "have defaults" do
|
23
|
+
assert_equal 'http://localhost:9200', @subject.url
|
24
|
+
assert_equal '_all', @subject.indices
|
25
|
+
end
|
26
|
+
|
27
|
+
should "be configurable" do
|
28
|
+
@subject = ::Backup::Database::Elasticsearch.new(@model) do |db|
|
29
|
+
db.url = 'https://example.com'
|
30
|
+
db.indices = 'foo,bar'
|
31
|
+
end
|
32
|
+
|
33
|
+
assert_equal 'https://example.com', @subject.url
|
34
|
+
assert_equal 'foo,bar', @subject.indices
|
35
|
+
|
36
|
+
assert_equal 'example.com', @subject.client.transport.connections.first.host[:host]
|
37
|
+
end
|
38
|
+
|
39
|
+
should "perform the backup" do
|
40
|
+
@subject.expects(:__perform_single)
|
41
|
+
@subject.perform!
|
42
|
+
end
|
43
|
+
|
44
|
+
should "raise an expection for an unsupported type of backup" do
|
45
|
+
@subject = ::Backup::Database::Elasticsearch.new(@model) { |db| db.mode = 'foobar' }
|
46
|
+
assert_raise ::Backup::Database::Elasticsearch::Error do
|
47
|
+
@subject.perform!
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
should "scan and scroll the index" do
|
52
|
+
@subject = ::Backup::Database::Elasticsearch.new(@model) { |db| db.indices = 'test' }
|
53
|
+
|
54
|
+
@subject.client
|
55
|
+
.expects(:search)
|
56
|
+
.with do |params|
|
57
|
+
assert_equal 'test', params[:index]
|
58
|
+
end
|
59
|
+
.returns({"_scroll_id" => "abc123"})
|
60
|
+
|
61
|
+
@subject.client
|
62
|
+
.expects(:scroll)
|
63
|
+
.twice
|
64
|
+
.returns({"_scroll_id" => "def456",
|
65
|
+
"hits" => { "hits" => [ {"_index"=>"test", "_type"=>"doc", "_id"=>"1", "_source"=>{"title"=>"Test"}} ] }
|
66
|
+
})
|
67
|
+
.then
|
68
|
+
.returns({"_scroll_id" => "ghi789",
|
69
|
+
"hits" => { "hits" => [] }
|
70
|
+
})
|
71
|
+
|
72
|
+
@subject.__perform_single
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
metadata
CHANGED
@@ -1,209 +1,265 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karel Minarik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ansi
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '4.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ruby-prof
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: awesome_print
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: shoulda-context
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: mocha
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: turn
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: yard
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: pry
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: ci_reporter
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '1.9'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '1.9'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: simplecov
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
|
-
- -
|
185
|
+
- - ">="
|
172
186
|
- !ruby/object:Gem::Version
|
173
187
|
version: '0'
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
|
-
- -
|
192
|
+
- - ">="
|
179
193
|
- !ruby/object:Gem::Version
|
180
194
|
version: '0'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: simplecov-rcov
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
184
198
|
requirements:
|
185
|
-
- -
|
199
|
+
- - ">="
|
186
200
|
- !ruby/object:Gem::Version
|
187
201
|
version: '0'
|
188
202
|
type: :development
|
189
203
|
prerelease: false
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
191
205
|
requirements:
|
192
|
-
- -
|
206
|
+
- - ">="
|
193
207
|
- !ruby/object:Gem::Version
|
194
208
|
version: '0'
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: cane
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
198
212
|
requirements:
|
199
|
-
- -
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: backup
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '4'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '4'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: patron
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: oj
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
200
256
|
- !ruby/object:Gem::Version
|
201
257
|
version: '0'
|
202
258
|
type: :development
|
203
259
|
prerelease: false
|
204
260
|
version_requirements: !ruby/object:Gem::Requirement
|
205
261
|
requirements:
|
206
|
-
- -
|
262
|
+
- - ">="
|
207
263
|
- !ruby/object:Gem::Version
|
208
264
|
version: '0'
|
209
265
|
description: Extensions for the Elasticsearch Rubygem
|
@@ -213,7 +269,7 @@ executables: []
|
|
213
269
|
extensions: []
|
214
270
|
extra_rdoc_files: []
|
215
271
|
files:
|
216
|
-
- .gitignore
|
272
|
+
- ".gitignore"
|
217
273
|
- Gemfile
|
218
274
|
- LICENSE.txt
|
219
275
|
- README.md
|
@@ -225,12 +281,14 @@ files:
|
|
225
281
|
- lib/elasticsearch/extensions/ansi/actions.rb
|
226
282
|
- lib/elasticsearch/extensions/ansi/helpers.rb
|
227
283
|
- lib/elasticsearch/extensions/ansi/response.rb
|
284
|
+
- lib/elasticsearch/extensions/backup.rb
|
228
285
|
- lib/elasticsearch/extensions/test/cluster.rb
|
229
286
|
- lib/elasticsearch/extensions/test/cluster/tasks.rb
|
230
287
|
- lib/elasticsearch/extensions/test/profiling.rb
|
231
288
|
- lib/elasticsearch/extensions/test/startup_shutdown.rb
|
232
289
|
- lib/elasticsearch/extensions/version.rb
|
233
290
|
- test/ansi/unit/ansi_test.rb
|
291
|
+
- test/backup/unit/backup_test.rb
|
234
292
|
- test/test_helper.rb
|
235
293
|
homepage: ''
|
236
294
|
licenses:
|
@@ -242,12 +300,12 @@ require_paths:
|
|
242
300
|
- lib
|
243
301
|
required_ruby_version: !ruby/object:Gem::Requirement
|
244
302
|
requirements:
|
245
|
-
- -
|
303
|
+
- - ">="
|
246
304
|
- !ruby/object:Gem::Version
|
247
305
|
version: '0'
|
248
306
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
249
307
|
requirements:
|
250
|
-
- -
|
308
|
+
- - ">="
|
251
309
|
- !ruby/object:Gem::Version
|
252
310
|
version: '0'
|
253
311
|
requirements: []
|
@@ -258,5 +316,6 @@ specification_version: 4
|
|
258
316
|
summary: Extensions for the Elasticsearch Rubygem
|
259
317
|
test_files:
|
260
318
|
- test/ansi/unit/ansi_test.rb
|
319
|
+
- test/backup/unit/backup_test.rb
|
261
320
|
- test/test_helper.rb
|
262
321
|
has_rdoc:
|