esse 0.0.3 → 0.0.4
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 +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
|