esse 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/esse/backend/index/aliases.rb +1 -1
- data/lib/esse/backend/index/close.rb +1 -3
- data/lib/esse/backend/index/create.rb +1 -1
- data/lib/esse/backend/index/delete.rb +1 -3
- data/lib/esse/backend/index/existance.rb +1 -2
- data/lib/esse/backend/index/open.rb +1 -3
- data/lib/esse/backend/index/update.rb +2 -5
- data/lib/esse/backend/index.rb +11 -3
- data/lib/esse/backend/index_type/documents.rb +33 -22
- data/lib/esse/backend/index_type.rb +7 -2
- data/lib/esse/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a79fdcfdbdc2c217432f128fc93fa67f543c450d9e2cfa1d7f1d57b5242f1be4
|
4
|
+
data.tar.gz: ae620c10d8930fcf86e0323d375ed96effa4c77beeb8da13cd0be2738133bc3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 406f2d91072eb6c8e7dca67072ff5954c3fad9d94efbb20582ecec81bbe4d2080bb6c0921d2b41702745214932d3d15879469061ddca8189913f333b4ee4bb6e
|
7
|
+
data.tar.gz: e5f4aecf985af27f3a80f47188a5fa9524a935c9a382da77673d7b3ebb9c71fab2543a19f10725372ca87d2088d25e17919e73f4152000d2dcfc9a23e729a2c3
|
data/Gemfile.lock
CHANGED
@@ -44,7 +44,7 @@ module Esse
|
|
44
44
|
*indices.map do |index|
|
45
45
|
{ remove: { index: index, alias: index_name } }
|
46
46
|
end,
|
47
|
-
{ add: {index:
|
47
|
+
{ add: {index: build_real_index_name(suffix), alias: index_name } }
|
48
48
|
],
|
49
49
|
}
|
50
50
|
client.indices.update_aliases(options)
|
@@ -21,9 +21,7 @@ module Esse
|
|
21
21
|
#
|
22
22
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html
|
23
23
|
def close!(suffix: index_version, **options)
|
24
|
-
|
25
|
-
|
26
|
-
client.indices.close(options.merge(index: name))
|
24
|
+
client.indices.close(options.merge(index: index_name(suffix: suffix)))
|
27
25
|
end
|
28
26
|
|
29
27
|
# Close an index (keep the data on disk, but deny operations with the index).
|
@@ -39,7 +39,7 @@ module Esse
|
|
39
39
|
# @see http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/
|
40
40
|
def create_index!(suffix: nil, **options)
|
41
41
|
options = DEFAULT_OPTIONS.merge(options)
|
42
|
-
name =
|
42
|
+
name = build_real_index_name(suffix)
|
43
43
|
definition = [settings_hash, mappings_hash].reduce(&:merge)
|
44
44
|
|
45
45
|
if options[:alias] && name != index_name
|
@@ -13,9 +13,7 @@ module Esse
|
|
13
13
|
# @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when index does not exists
|
14
14
|
# @return [Hash] elasticsearch response
|
15
15
|
def delete_index!(suffix:)
|
16
|
-
|
17
|
-
|
18
|
-
client.indices.delete(index: name)
|
16
|
+
client.indices.delete(index: index_name(suffix: suffix))
|
19
17
|
end
|
20
18
|
|
21
19
|
# Deletes ES index
|
@@ -12,8 +12,7 @@ module Esse
|
|
12
12
|
# @option options [String, nil] :suffix The index suffix. Defaults to the index_version.
|
13
13
|
# Use nil if you want to check existence of the `index_name` index or alias.
|
14
14
|
def exist?(suffix: index_version)
|
15
|
-
|
16
|
-
client.indices.exists(index: name)
|
15
|
+
client.indices.exists(index: index_name(suffix: suffix))
|
17
16
|
end
|
18
17
|
end
|
19
18
|
|
@@ -21,9 +21,7 @@ module Esse
|
|
21
21
|
#
|
22
22
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-open.html
|
23
23
|
def open!(suffix: index_version, **options)
|
24
|
-
|
25
|
-
|
26
|
-
client.indices.open(options.merge(index: name))
|
24
|
+
client.indices.open(options.merge(index: index_name(suffix: suffix)))
|
27
25
|
end
|
28
26
|
|
29
27
|
# Open a previously closed index
|
@@ -27,9 +27,7 @@ module Esse
|
|
27
27
|
#
|
28
28
|
# @see http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/
|
29
29
|
def update_mapping!(suffix: index_version, **options)
|
30
|
-
|
31
|
-
|
32
|
-
client.indices.put_mapping(options.merge(index: name, body: mappings_hash.fetch(Esse::MAPPING_ROOT_KEY)))
|
30
|
+
client.indices.put_mapping(options.merge(index: index_name(suffix: suffix), body: mappings_hash.fetch(Esse::MAPPING_ROOT_KEY)))
|
33
31
|
end
|
34
32
|
|
35
33
|
# Create or update a mapping
|
@@ -78,13 +76,12 @@ module Esse
|
|
78
76
|
#
|
79
77
|
# @see http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings/
|
80
78
|
def update_settings!(suffix: index_version, **options)
|
81
|
-
name = suffix ? real_index_name(suffix) : index_name
|
82
79
|
response = nil
|
83
80
|
|
84
81
|
close!(suffix: suffix)
|
85
82
|
begin
|
86
83
|
body = settings_hash(cluster_settings: false).fetch(Esse::SETTING_ROOT_KEY)
|
87
|
-
response = client.indices.put_settings(options.merge(index:
|
84
|
+
response = client.indices.put_settings(options.merge(index: index_name(suffix: suffix), body: body))
|
88
85
|
ensure
|
89
86
|
open!(suffix: suffix)
|
90
87
|
end
|
data/lib/esse/backend/index.rb
CHANGED
@@ -16,7 +16,7 @@ module Esse
|
|
16
16
|
|
17
17
|
extend Forwardable
|
18
18
|
|
19
|
-
NAMING = %i[
|
19
|
+
NAMING = %i[index_version].freeze
|
20
20
|
DEFINITION = %i[settings_hash mappings_hash].freeze
|
21
21
|
|
22
22
|
def_delegators :@index, :type_hash, *(NAMING + DEFINITION)
|
@@ -27,9 +27,17 @@ module Esse
|
|
27
27
|
|
28
28
|
protected
|
29
29
|
|
30
|
-
def
|
30
|
+
def index_name(suffix: nil)
|
31
|
+
suffix = Hstring.new(suffix).underscore.presence
|
32
|
+
return @index.index_name unless suffix
|
33
|
+
|
34
|
+
[@index.index_name, suffix].join('_')
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_real_index_name(suffix = nil)
|
31
38
|
suffix = Hstring.new(suffix).underscore.presence || index_version || Esse.timestamp
|
32
|
-
|
39
|
+
|
40
|
+
index_name(suffix: suffix)
|
33
41
|
end
|
34
42
|
|
35
43
|
def client
|
@@ -7,11 +7,12 @@ module Esse
|
|
7
7
|
# Resolve collection and index data
|
8
8
|
#
|
9
9
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
10
|
+
# @option [String, nil] :suffix The index suffix. Defaults to the nil.
|
10
11
|
# @option [Hash] :context The collection context. This value will be passed as argument to the collection
|
11
12
|
# May be SQL condition or any other filter you have defined on the collection.
|
12
|
-
def import(context: {}, **options)
|
13
|
+
def import(context: {}, suffix: nil, **options)
|
13
14
|
each_serialized_batch(context || {}) do |batch|
|
14
|
-
bulk(index: batch, **options)
|
15
|
+
bulk(index: batch, suffix: suffix, **options)
|
15
16
|
end
|
16
17
|
end
|
17
18
|
alias import! import
|
@@ -20,13 +21,14 @@ module Esse
|
|
20
21
|
# This reduces overhead and can greatly increase indexing speed.
|
21
22
|
#
|
22
23
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
24
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
23
25
|
# @param options [Array] :index list of serialized documents to be indexed(Optional)
|
24
26
|
# @param options [Array] :delete list of serialized documents to be deleted(Optional)
|
25
27
|
# @param options [Array] :create list of serialized documents to be created(Optional)
|
26
28
|
# @return [Hash, nil] the elasticsearch response or nil if there is no data.
|
27
29
|
#
|
28
30
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-bulk.html
|
29
|
-
def bulk(index: nil, delete: nil, create: nil, **options)
|
31
|
+
def bulk(index: nil, delete: nil, create: nil, suffix: nil, **options)
|
30
32
|
body = []
|
31
33
|
Array(index).each do |entry|
|
32
34
|
id, data = Esse.doc_id!(entry)
|
@@ -44,7 +46,7 @@ module Esse
|
|
44
46
|
return if body.empty?
|
45
47
|
|
46
48
|
definition = {
|
47
|
-
index: index_name,
|
49
|
+
index: index_name(suffix: suffix),
|
48
50
|
type: type_name,
|
49
51
|
body: body,
|
50
52
|
}.merge(options)
|
@@ -61,12 +63,13 @@ module Esse
|
|
61
63
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
62
64
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
63
65
|
# @param options [Hash] :body The JSON document that will be indexed (Required)
|
66
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
64
67
|
# @return [Hash] the elasticsearch response Hash
|
65
68
|
#
|
66
69
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-index_.html
|
67
|
-
def index(id:, body:, **options)
|
70
|
+
def index(id:, body:, suffix: nil, **options)
|
68
71
|
client.index(
|
69
|
-
options.merge(index: index_name, type: type_name, id: id, body: body),
|
72
|
+
options.merge(index: index_name(suffix: suffix), type: type_name, id: id, body: body),
|
70
73
|
)
|
71
74
|
end
|
72
75
|
alias index! index
|
@@ -78,13 +81,14 @@ module Esse
|
|
78
81
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
79
82
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
80
83
|
# @param options [Hash] :body the body of the request
|
84
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
81
85
|
# @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when the doc does not exist
|
82
86
|
# @return [Hash] elasticsearch response hash
|
83
87
|
#
|
84
88
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-update.html
|
85
|
-
def update!(id:, body:, **options)
|
89
|
+
def update!(id:, body:, suffix: nil, **options)
|
86
90
|
client.update(
|
87
|
-
options.merge(index: index_name, type: type_name, id: id, body: body),
|
91
|
+
options.merge(index: index_name(suffix: suffix), type: type_name, id: id, body: body),
|
88
92
|
)
|
89
93
|
end
|
90
94
|
|
@@ -95,11 +99,12 @@ module Esse
|
|
95
99
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
96
100
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
97
101
|
# @param options [Hash] :body the body of the request
|
102
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
98
103
|
# @return [Hash, false] the elasticsearch response hash, or false in case of failure
|
99
104
|
#
|
100
105
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-update.html
|
101
|
-
def update(id:, body:, **options)
|
102
|
-
update!(id: id, body: body, **options)
|
106
|
+
def update(id:, body:, suffix: nil, **options)
|
107
|
+
update!(id: id, body: body, suffix: suffix, **options)
|
103
108
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
104
109
|
false
|
105
110
|
end
|
@@ -111,12 +116,13 @@ module Esse
|
|
111
116
|
#
|
112
117
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
113
118
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
119
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
114
120
|
# @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when the doc does not exist
|
115
121
|
# @return [Boolean] true when the operation is successfully completed
|
116
122
|
#
|
117
123
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-delete.html
|
118
|
-
def delete!(id:, **options)
|
119
|
-
client.delete(options.merge(index: index_name, type: type_name, id: id))
|
124
|
+
def delete!(id:, suffix: nil, **options)
|
125
|
+
client.delete(options.merge(index: index_name(suffix: suffix), type: type_name, id: id))
|
120
126
|
end
|
121
127
|
|
122
128
|
# Removes a JSON document from the specified index.
|
@@ -126,12 +132,13 @@ module Esse
|
|
126
132
|
#
|
127
133
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
128
134
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
135
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
129
136
|
# @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when the doc does not exist
|
130
137
|
# @return [Boolean] true when the operation is successfully completed
|
131
138
|
#
|
132
139
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-delete.html
|
133
|
-
def delete(id:, **options)
|
134
|
-
delete!(id: id, **options)
|
140
|
+
def delete(id:, suffix: nil, **options)
|
141
|
+
delete!(id: id, suffix: suffix, **options)
|
135
142
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
136
143
|
false
|
137
144
|
end
|
@@ -143,11 +150,12 @@ module Esse
|
|
143
150
|
#
|
144
151
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
145
152
|
# @param options [Hash] :body A query to restrict the results specified with the Query DSL (optional)
|
153
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
146
154
|
# @return [Integer] amount of documents found
|
147
155
|
#
|
148
156
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/search-count.html
|
149
|
-
def count(**options)
|
150
|
-
response = client.count(options.merge(index: index_name, type: type_name))
|
157
|
+
def count(suffix: nil, **options)
|
158
|
+
response = client.count(options.merge(index: index_name(suffix: suffix), type: type_name))
|
151
159
|
response['count']
|
152
160
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
153
161
|
0
|
@@ -160,9 +168,10 @@ module Esse
|
|
160
168
|
#
|
161
169
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
162
170
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
171
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
163
172
|
# @return [Boolean] true if the document exists
|
164
|
-
def exist?(id:, **options)
|
165
|
-
client.exists(options.merge(index: index_name, type: type_name, id: id))
|
173
|
+
def exist?(id:, suffix: nil, **options)
|
174
|
+
client.exists(options.merge(index: index_name(suffix: suffix), type: type_name, id: id))
|
166
175
|
end
|
167
176
|
|
168
177
|
# Retrieves the specified JSON document from an index.
|
@@ -172,12 +181,13 @@ module Esse
|
|
172
181
|
#
|
173
182
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
174
183
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
184
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
175
185
|
# @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when the doc does not exist
|
176
186
|
# @return [Hash] The elasticsearch document.
|
177
187
|
#
|
178
188
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-get.html
|
179
|
-
def find!(id:, **options)
|
180
|
-
client.get(options.merge(index: index_name, type: type_name, id: id))
|
189
|
+
def find!(id:, suffix: nil, **options)
|
190
|
+
client.get(options.merge(index: index_name(suffix: suffix), type: type_name, id: id))
|
181
191
|
end
|
182
192
|
|
183
193
|
# Retrieves the specified JSON document from an index.
|
@@ -187,11 +197,12 @@ module Esse
|
|
187
197
|
#
|
188
198
|
# @param options [Hash] Hash of paramenters that will be passed along to elasticsearch request
|
189
199
|
# @param options [String, Integer] :id The `_id` of the elasticsearch document
|
200
|
+
# @param options [String, nil] :suffix The index suffix. Defaults to the nil.
|
190
201
|
# @return [Hash, nil] The elasticsearch document
|
191
202
|
#
|
192
203
|
# @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-get.html
|
193
|
-
def find(id:, **options)
|
194
|
-
find!(id: id, **options)
|
204
|
+
def find(id:, suffix: nil, **options)
|
205
|
+
find!(id: id, suffix: suffix, **options)
|
195
206
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
196
207
|
nil
|
197
208
|
end
|
@@ -11,8 +11,6 @@ module Esse
|
|
11
11
|
|
12
12
|
# Type delegators
|
13
13
|
def_delegators :@index_type, :type_name, :each_serialized_batch, :serialize
|
14
|
-
# Index delegators
|
15
|
-
def_delegators :index_class, :index_name
|
16
14
|
|
17
15
|
def initialize(type)
|
18
16
|
@index_type = type
|
@@ -20,6 +18,13 @@ module Esse
|
|
20
18
|
|
21
19
|
protected
|
22
20
|
|
21
|
+
def index_name(suffix: nil)
|
22
|
+
suffix = Hstring.new(suffix).underscore.presence
|
23
|
+
return index_class.index_name unless suffix
|
24
|
+
|
25
|
+
[index_class.index_name, suffix].join('_')
|
26
|
+
end
|
27
|
+
|
23
28
|
def index_class
|
24
29
|
@index_type.index
|
25
30
|
end
|
data/lib/esse/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcos G. Zimmermann
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: elasticsearch
|