es_dump_restore 2.2.2 → 3.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4965b79edc9ae5cc1f6eaf0f27199792ee991d9
4
- data.tar.gz: 1f061a54c152128037b5510e0ec901ebef0d5799
3
+ metadata.gz: fba1c866a6ebce9f261aaf8415155de3f450d5ef
4
+ data.tar.gz: 9ebbc5d6ffc601122b84864ce6bb7750e86e4b43
5
5
  SHA512:
6
- metadata.gz: 5b1609965037f9a4e0acf23fa29e3ebcb7c5756d5098e90edd255de74c353eb9823070922fe2e444537120d832bd43c51923c23297d09f881fdf683551c7b8f9
7
- data.tar.gz: aa4cc30bf4c3299a4f388b9103e1d043525f27003a8d72cd2286252fdae1c6497ccb42de2980b618b95229aab55d84b4cad5dcf8937abfd41181a253f7b06cda
6
+ metadata.gz: 6f5d6f71fc4a58c8989643e1d31aa1fe4952a227d392595d73525ff10ec2b89abe7af1d77281006af986a836aff0e6386a0b3fa5d14e37bb2434744cc663da35
7
+ data.tar.gz: 4729f3c751b2606aa8a4c714bcc9add0719bd3403a78a1471708d177d4544ce2e3fcec42faf0f2514ccc4cd240a5c244dd991b1f3156a77c4d597f017cb3849e
@@ -1,3 +1,10 @@
1
+ # Version 3.0.0 - December 1, 2017
2
+
3
+ * Fixes a bug causing document versions not to be recorded
4
+ * BREAKING CHANGE: Exposes a --preserve-versions option to dump and dump_type with a default value
5
+ of **false** in order to record document versions. Previous intended default behavior was to
6
+ preserve versions.
7
+
1
8
  # Version 2.2.2 - November 13, 2017
2
9
 
3
10
  * Fix for incorrect parsing of the retry command-line parameter (thanks to Mat Moore!)
@@ -14,15 +14,17 @@ module EsDumpRestore
14
14
  option :verbose, :type => :boolean # add some additional output
15
15
 
16
16
  desc "dump URL INDEX_NAME FILENAME", "Creates a dumpfile based on the given ElasticSearch index"
17
+ method_option :preserve_versions, type: :boolean, desc: "Whether to record the current version for each indexed document"
17
18
  def dump(url, index_name, filename)
18
19
  client = EsClient.new(url, index_name, nil)
19
- _dump(client, filename)
20
+ _dump(client, filename, options[:preserve_versions])
20
21
  end
21
22
 
22
23
  desc "dump_type URL INDEX_NAME TYPE FILENAME", "Creates a dumpfile based on the given ElasticSearch index"
24
+ method_option :preserve_versions, type: :boolean, desc: "Whether to record the current version for each indexed document"
23
25
  def dump_type(url, index_name, type, filename)
24
26
  client = EsClient.new(url, index_name, type)
25
- _dump(client, filename)
27
+ _dump(client, filename, options[:preserve_versions])
26
28
  end
27
29
 
28
30
  desc "restore URL INDEX_NAME FILENAME", "Restores a dumpfile into the given ElasticSearch index"
@@ -62,7 +64,7 @@ module EsDumpRestore
62
64
 
63
65
  private
64
66
 
65
- def _dump(client, filename)
67
+ def _dump(client, filename, preserve_versions)
66
68
  Dumpfile.write(filename) do |dumpfile|
67
69
  dumpfile.index = {
68
70
  settings: client.settings,
@@ -77,8 +79,12 @@ module EsDumpRestore
77
79
  client.each_scroll_hit(scroll_id) do |hit|
78
80
  hit['fields'] ||= {}
79
81
  metadata = { index: { _type: hit["_type"], _id: hit["_id"] } }
82
+ if preserve_versions
83
+ metadata[:index][:version_type] = :external
84
+ metadata[:index][:_version] = hit["_version"]
85
+ end
80
86
 
81
- %w(_timestamp _version _routing _percolate _parent _ttl).each do |metadata_field|
87
+ %w(_timestamp _routing _percolate _parent _ttl).each do |metadata_field|
82
88
  metadata[:index][metadata_field] = hit['fields'][metadata_field] if hit['fields'][metadata_field]
83
89
  end
84
90
 
@@ -46,9 +46,9 @@ module EsDumpRestore
46
46
 
47
47
  def start_scan(&block)
48
48
  scroll = request(:get, "#{@path_prefix}/_search",
49
- query: { search_type: 'scan', scroll: '10m', size: 500 },
49
+ query: { search_type: 'scan', scroll: '10m', size: 500, version: true },
50
50
  body: MultiJson.dump({
51
- fields: ['_source', '_timestamp', '_version', '_routing', '_percolate', '_parent', '_ttl'],
51
+ fields: ['_source', '_timestamp', '_routing', '_percolate', '_parent', '_ttl'],
52
52
  query: { match_all: {} } }
53
53
  ))
54
54
  total = scroll["hits"]["total"]
@@ -60,9 +60,13 @@ module EsDumpRestore
60
60
  def each_scroll_hit(scroll_id, &block)
61
61
  done = 0
62
62
  loop do
63
- batch = request(:get, '_search/scroll', {query: {
64
- scroll: '10m', scroll_id: scroll_id
65
- }}, [404])
63
+ batch = request(:get, '_search/scroll', {
64
+ query: {
65
+ version: true,
66
+ scroll: '10m',
67
+ scroll_id: scroll_id
68
+ }
69
+ }, [404])
66
70
 
67
71
  batch_hits = batch["hits"]
68
72
  break if batch_hits.nil?
@@ -1,3 +1,3 @@
1
1
  module EsDumpRestore
2
- VERSION = "2.2.2"
2
+ VERSION = "3.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: es_dump_restore
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nat Budin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-13 00:00:00.000000000 Z
11
+ date: 2017-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -135,8 +135,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  version: '0'
136
136
  requirements: []
137
137
  rubyforge_project:
138
- rubygems_version: 2.6.4
138
+ rubygems_version: 2.6.13
139
139
  signing_key:
140
140
  specification_version: 4
141
141
  summary: Dump ElasticSearch indexes to files and restore them back
142
142
  test_files: []
143
+ has_rdoc: