esse 0.2.0 → 0.2.3
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/lib/esse/cli/event_listener.rb +13 -0
- data/lib/esse/cli/generate.rb +53 -14
- data/lib/esse/cli/index/base_operation.rb +5 -13
- data/lib/esse/cli/index/close.rb +1 -1
- data/lib/esse/cli/index/create.rb +1 -1
- data/lib/esse/cli/index/delete.rb +1 -1
- data/lib/esse/cli/index/import.rb +6 -2
- data/lib/esse/cli/index/open.rb +1 -1
- data/lib/esse/cli/index/reset.rb +1 -1
- data/lib/esse/cli/index/update_aliases.rb +2 -2
- data/lib/esse/cli/index/update_mapping.rb +9 -5
- data/lib/esse/cli/index/update_settings.rb +1 -1
- data/lib/esse/cli/index.rb +11 -4
- data/lib/esse/cli/templates/collection.rb.erb +29 -0
- data/lib/esse/cli/templates/config.rb.erb +13 -3
- data/lib/esse/cli/templates/document.rb.erb +34 -0
- data/lib/esse/cli/templates/index.rb.erb +63 -114
- data/lib/esse/cli/templates/mappings.json +27 -0
- data/lib/esse/cli/templates/settings.json +62 -0
- data/lib/esse/cli.rb +5 -0
- data/lib/esse/cluster.rb +93 -12
- data/lib/esse/cluster_engine.rb +42 -0
- data/lib/esse/collection.rb +18 -0
- data/lib/esse/config.rb +14 -2
- data/lib/esse/core.rb +28 -7
- data/lib/esse/deprecations/cluster.rb +27 -0
- data/lib/esse/deprecations/deprecate.rb +29 -0
- data/lib/esse/deprecations/index.rb +37 -0
- data/lib/esse/deprecations/index_backend_delegator.rb +217 -0
- data/lib/esse/deprecations/repository.rb +34 -0
- data/lib/esse/deprecations/repository_backend_delegator.rb +110 -0
- data/lib/esse/deprecations/serializer.rb +14 -0
- data/lib/esse/deprecations.rb +7 -0
- data/lib/esse/document.rb +91 -0
- data/lib/esse/dynamic_template.rb +43 -0
- data/lib/esse/errors.rb +60 -2
- data/lib/esse/events/event.rb +4 -19
- data/lib/esse/events.rb +13 -2
- data/lib/esse/hash_document.rb +38 -0
- data/lib/esse/import/bulk.rb +106 -0
- data/lib/esse/import/request_body.rb +60 -0
- data/lib/esse/index/aliases.rb +50 -0
- data/lib/esse/index/attributes.rb +107 -0
- data/lib/esse/index/base.rb +17 -53
- data/lib/esse/index/documents.rb +236 -0
- data/lib/esse/index/indices.rb +171 -0
- data/lib/esse/index/inheritance.rb +30 -0
- data/lib/esse/index/mappings.rb +6 -19
- data/lib/esse/index/object_document_mapper.rb +36 -0
- data/lib/esse/index/plugins.rb +42 -0
- data/lib/esse/index/search.rb +27 -0
- data/lib/esse/index/settings.rb +2 -2
- data/lib/esse/index/type.rb +51 -11
- data/lib/esse/index.rb +14 -9
- data/lib/esse/index_mapping.rb +10 -2
- data/lib/esse/index_setting.rb +3 -1
- data/lib/esse/null_document.rb +35 -0
- data/lib/esse/plugins.rb +12 -0
- data/lib/esse/primitives/hstring.rb +1 -1
- data/lib/esse/{index_type → repository}/actions.rb +1 -1
- data/lib/esse/repository/documents.rb +13 -0
- data/lib/esse/repository/object_document_mapper.rb +157 -0
- data/lib/esse/repository.rb +17 -0
- data/lib/esse/search/query.rb +105 -0
- data/lib/esse/search/response.rb +46 -0
- data/lib/esse/template_loader.rb +1 -1
- data/lib/esse/transport/aliases.rb +36 -0
- data/lib/esse/transport/documents.rb +199 -0
- data/lib/esse/transport/health.rb +30 -0
- data/lib/esse/transport/indices.rb +192 -0
- data/lib/esse/transport/search.rb +48 -0
- data/lib/esse/transport.rb +44 -0
- data/lib/esse/version.rb +1 -1
- data/lib/esse.rb +20 -5
- metadata +55 -50
- data/lib/esse/backend/index/aliases.rb +0 -73
- data/lib/esse/backend/index/close.rb +0 -54
- data/lib/esse/backend/index/create.rb +0 -67
- data/lib/esse/backend/index/delete.rb +0 -39
- data/lib/esse/backend/index/documents.rb +0 -23
- data/lib/esse/backend/index/existance.rb +0 -22
- data/lib/esse/backend/index/open.rb +0 -54
- data/lib/esse/backend/index/refresh.rb +0 -43
- data/lib/esse/backend/index/reset.rb +0 -33
- data/lib/esse/backend/index/update.rb +0 -143
- data/lib/esse/backend/index.rb +0 -54
- data/lib/esse/backend/index_type/documents.rb +0 -214
- data/lib/esse/backend/index_type.rb +0 -37
- data/lib/esse/cli/templates/type_collection.rb.erb +0 -41
- data/lib/esse/cli/templates/type_mappings.json +0 -6
- data/lib/esse/cli/templates/type_serializer.rb.erb +0 -23
- data/lib/esse/index/backend.rb +0 -14
- data/lib/esse/index/naming.rb +0 -64
- data/lib/esse/index_type/backend.rb +0 -14
- data/lib/esse/index_type/mappings.rb +0 -42
- data/lib/esse/index_type.rb +0 -15
- data/lib/esse/object_document_mapper.rb +0 -110
@@ -0,0 +1,217 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
module Deprecations
|
5
|
+
class IndexBackendDelegator
|
6
|
+
extend Esse::Deprecations::Deprecate
|
7
|
+
|
8
|
+
def initialize(namespace, index)
|
9
|
+
@namespace = namespace
|
10
|
+
@index = index
|
11
|
+
end
|
12
|
+
|
13
|
+
def aliases(**kwargs)
|
14
|
+
warning("#{@index}.#{@namespace}.aliases", "#{@index}.aliases", 2023, 12)
|
15
|
+
@index.aliases(**kwargs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def indices(**kwargs)
|
19
|
+
warning("#{@index}.#{@namespace}.indices", "#{@index}.indices_pointing_to_alias", 2023, 12)
|
20
|
+
@index.indices_pointing_to_alias(**kwargs)
|
21
|
+
end
|
22
|
+
|
23
|
+
def update_aliases!(**kwargs)
|
24
|
+
warning("#{@index}.#{@namespace}.update_aliases!", "#{@index}.update_aliases", 2023, 12)
|
25
|
+
@index.update_aliases(**kwargs)
|
26
|
+
end
|
27
|
+
|
28
|
+
def update_aliases(**kwargs)
|
29
|
+
warning("#{@index}.#{@namespace}.update_aliases", "#{@index}.update_aliases", 2023, 12)
|
30
|
+
|
31
|
+
@index.update_aliases(**kwargs)
|
32
|
+
rescue Esse::Transport::NotFoundError
|
33
|
+
{ 'errors' => true }
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_index(**kwargs)
|
37
|
+
warning("#{@index}.#{@namespace}.create_index", "#{@index}.create_index", 2023, 12)
|
38
|
+
|
39
|
+
@index.create_index(**kwargs)
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_index!(**kwargs)
|
43
|
+
warning("#{@index}.#{@namespace}.create_index!", "#{@index}.create_index", 2023, 12)
|
44
|
+
|
45
|
+
@index.create_index(**kwargs)
|
46
|
+
end
|
47
|
+
|
48
|
+
def close(**kwargs)
|
49
|
+
warning("#{@index}.#{@namespace}.close", "#{@index}.close", 2023, 12)
|
50
|
+
|
51
|
+
@index.close(**kwargs)
|
52
|
+
end
|
53
|
+
|
54
|
+
def close!(**kwargs)
|
55
|
+
warning("#{@index}.#{@namespace}.close!", "#{@index}.close", 2023, 12)
|
56
|
+
|
57
|
+
@index.close(**kwargs)
|
58
|
+
end
|
59
|
+
|
60
|
+
def open(**kwargs)
|
61
|
+
warning("#{@index}.#{@namespace}.open", "#{@index}.open", 2023, 12)
|
62
|
+
|
63
|
+
@index.open(**kwargs)
|
64
|
+
end
|
65
|
+
|
66
|
+
def open!(**kwargs)
|
67
|
+
warning("#{@index}.#{@namespace}.open!", "#{@index}.open", 2023, 12)
|
68
|
+
|
69
|
+
@index.open(**kwargs)
|
70
|
+
end
|
71
|
+
|
72
|
+
def refresh(**kwargs)
|
73
|
+
warning("#{@index}.#{@namespace}.refresh", "#{@index}.refresh", 2023, 12)
|
74
|
+
|
75
|
+
@index.refresh(**kwargs)
|
76
|
+
end
|
77
|
+
|
78
|
+
def refresh!(**kwargs)
|
79
|
+
warning("#{@index}.#{@namespace}.refresh!", "#{@index}.refresh", 2023, 12)
|
80
|
+
|
81
|
+
@index.refresh(**kwargs)
|
82
|
+
end
|
83
|
+
|
84
|
+
def delete_index(**kwargs)
|
85
|
+
warning("#{@index}.#{@namespace}.delete_index", "#{@index}.delete_index", 2023, 12)
|
86
|
+
|
87
|
+
@index.delete_index(**kwargs)
|
88
|
+
end
|
89
|
+
|
90
|
+
def delete_index!(**kwargs)
|
91
|
+
warning("#{@index}.#{@namespace}.delete_index!", "#{@index}.delete_index", 2023, 12)
|
92
|
+
|
93
|
+
@index.delete_index(**kwargs)
|
94
|
+
end
|
95
|
+
|
96
|
+
def index_exist?(**kwargs)
|
97
|
+
warning("#{@index}.#{@namespace}.index_exist?", "#{@index}.index_exist?", 2023, 12)
|
98
|
+
|
99
|
+
@index.index_exist?(**kwargs)
|
100
|
+
end
|
101
|
+
|
102
|
+
def update_mapping!(**kwargs)
|
103
|
+
warning("#{@index}.#{@namespace}.update_mapping!", "#{@index}.update_mapping", 2023, 12)
|
104
|
+
|
105
|
+
@index.update_mapping(**kwargs)
|
106
|
+
end
|
107
|
+
|
108
|
+
def update_mapping(**kwargs)
|
109
|
+
warning("#{@index}.#{@namespace}.update_mapping", "#{@index}.update_mapping", 2023, 12)
|
110
|
+
|
111
|
+
@index.update_mapping(**kwargs)
|
112
|
+
end
|
113
|
+
|
114
|
+
def update_settings!(**kwargs)
|
115
|
+
warning("#{@index}.#{@namespace}.update_settings!", "#{@index}.update_settings", 2023, 12)
|
116
|
+
|
117
|
+
@index.update_settings(**kwargs)
|
118
|
+
end
|
119
|
+
|
120
|
+
def update_settings(**kwargs)
|
121
|
+
warning("#{@index}.#{@namespace}.update_settings", "#{@index}.update_settings", 2023, 12)
|
122
|
+
|
123
|
+
@index.update_settings(**kwargs)
|
124
|
+
end
|
125
|
+
|
126
|
+
def reset_index!(**kwargs)
|
127
|
+
warning("#{@index}.#{@namespace}.reset_index!", "#{@index}.reset_index", 2023, 12)
|
128
|
+
|
129
|
+
@index.reset_index(**kwargs)
|
130
|
+
end
|
131
|
+
|
132
|
+
def import(**kwargs)
|
133
|
+
warning("#{@index}.#{@namespace}.import", "#{@index}.import", 2023, 12)
|
134
|
+
|
135
|
+
@index.import(**kwargs)
|
136
|
+
end
|
137
|
+
|
138
|
+
def import!(**kwargs)
|
139
|
+
warning("#{@index}.#{@namespace}.import!", "#{@index}.import", 2023, 12)
|
140
|
+
|
141
|
+
@index.import(**kwargs)
|
142
|
+
end
|
143
|
+
|
144
|
+
def bulk!(**kwargs)
|
145
|
+
warning("#{@index}.#{@namespace}.bulk!", "#{@index}.bulk", 2023, 12)
|
146
|
+
|
147
|
+
@index.bulk(**kwargs)
|
148
|
+
end
|
149
|
+
|
150
|
+
def bulk(**kwargs)
|
151
|
+
warning("#{@index}.#{@namespace}.bulk", "#{@index}.bulk", 2023, 12)
|
152
|
+
|
153
|
+
@index.bulk(**kwargs)
|
154
|
+
end
|
155
|
+
|
156
|
+
def index!(**kwargs)
|
157
|
+
warning("#{@index}.#{@namespace}.index!", "#{@index}.index", 2023, 12)
|
158
|
+
|
159
|
+
@index.index(**kwargs)
|
160
|
+
end
|
161
|
+
|
162
|
+
def index(**kwargs)
|
163
|
+
warning("#{@index}.#{@namespace}.index", "#{@index}.index", 2023, 12)
|
164
|
+
|
165
|
+
@index.index(**kwargs)
|
166
|
+
end
|
167
|
+
|
168
|
+
def update!(**kwargs)
|
169
|
+
warning("#{@index}.#{@namespace}.update!", "#{@index}.update", 2023, 12)
|
170
|
+
|
171
|
+
@index.update(**kwargs)
|
172
|
+
end
|
173
|
+
|
174
|
+
def update(**kwargs)
|
175
|
+
warning("#{@index}.#{@namespace}.update", "#{@index}.update", 2023, 12)
|
176
|
+
|
177
|
+
@index.update(**kwargs)
|
178
|
+
end
|
179
|
+
|
180
|
+
def delete!(**kwargs)
|
181
|
+
warning("#{@index}.#{@namespace}.delete!", "#{@index}.delete", 2023, 12)
|
182
|
+
|
183
|
+
@index.delete(**kwargs)
|
184
|
+
end
|
185
|
+
|
186
|
+
def delete(**kwargs)
|
187
|
+
warning("#{@index}.#{@namespace}.delete", "#{@index}.delete", 2023, 12)
|
188
|
+
|
189
|
+
@index.delete(**kwargs)
|
190
|
+
end
|
191
|
+
|
192
|
+
def count(**kwargs)
|
193
|
+
warning("#{@index}.#{@namespace}.count", "#{@index}.count", 2023, 12)
|
194
|
+
|
195
|
+
@index.count(**kwargs)
|
196
|
+
end
|
197
|
+
|
198
|
+
def exist?(**kwargs)
|
199
|
+
warning("#{@index}.#{@namespace}.exist?", "#{@index}.exist?", 2023, 12)
|
200
|
+
|
201
|
+
@index.exist?(**kwargs)
|
202
|
+
end
|
203
|
+
|
204
|
+
def find!(**kwargs)
|
205
|
+
warning("#{@index}.#{@namespace}.find!", "#{@index}.get", 2023, 12)
|
206
|
+
|
207
|
+
@index.get(**kwargs)
|
208
|
+
end
|
209
|
+
|
210
|
+
def find(**kwargs)
|
211
|
+
warning("#{@index}.#{@namespace}.find", "#{@index}.get", 2023, 12)
|
212
|
+
|
213
|
+
@index.get(**kwargs)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
class Repository
|
5
|
+
class << self
|
6
|
+
extend Esse::Deprecations::Deprecate
|
7
|
+
|
8
|
+
def type_name
|
9
|
+
repo_name
|
10
|
+
end
|
11
|
+
deprecate :type_name, :repo_type, 2023, 12
|
12
|
+
|
13
|
+
def mappings(*args, &block)
|
14
|
+
warning("#{self}.mappings", "#{index}.mappings", 2023, 12)
|
15
|
+
|
16
|
+
index.mappings(*args, &block)
|
17
|
+
end
|
18
|
+
|
19
|
+
def serializer(*args, **kwargs, &block)
|
20
|
+
warning("#{self}.serializer", "#{self}.document", 2023, 12)
|
21
|
+
|
22
|
+
document(*args, **kwargs, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def elasticsearch
|
26
|
+
Esse::Deprecations::RepositoryBackendDelegator.new(:elasticsearch, self)
|
27
|
+
end
|
28
|
+
|
29
|
+
def backend
|
30
|
+
Esse::Deprecations::RepositoryBackendDelegator.new(:backend, self)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
module Deprecations
|
5
|
+
class RepositoryBackendDelegator
|
6
|
+
extend Esse::Deprecations::Deprecate
|
7
|
+
|
8
|
+
def initialize(namespace, repo)
|
9
|
+
@namespace = namespace
|
10
|
+
@repo = repo
|
11
|
+
end
|
12
|
+
|
13
|
+
def import(**kwargs)
|
14
|
+
warning("#{@repo}.#{@namespace}.import", "#{@repo}.import", 2023, 12)
|
15
|
+
|
16
|
+
@repo.import(**kwargs)
|
17
|
+
end
|
18
|
+
|
19
|
+
def import!(**kwargs)
|
20
|
+
warning("#{@repo}.#{@namespace}.import!", "#{@repo}.import", 2023, 12)
|
21
|
+
|
22
|
+
@repo.import(**kwargs)
|
23
|
+
end
|
24
|
+
|
25
|
+
def bulk(**kwargs)
|
26
|
+
warning("#{@repo}.#{@namespace}.bulk", "#{@repo.index}.bulk", 2023, 12)
|
27
|
+
|
28
|
+
@repo.index.bulk(**kwargs)
|
29
|
+
end
|
30
|
+
|
31
|
+
def bulk!(**kwargs)
|
32
|
+
warning("#{@repo}.#{@namespace}.bulk!", "#{@repo.index}.bulk", 2023, 12)
|
33
|
+
|
34
|
+
@repo.index.bulk(**kwargs)
|
35
|
+
end
|
36
|
+
|
37
|
+
def index(**kwargs)
|
38
|
+
warning("#{@repo}.#{@namespace}.index", "#{@repo.index}.index", 2023, 12)
|
39
|
+
|
40
|
+
@repo.index.index(**kwargs)
|
41
|
+
end
|
42
|
+
|
43
|
+
def index!(**kwargs)
|
44
|
+
warning("#{@repo}.#{@namespace}.index!", "#{@repo.index}.index", 2023, 12)
|
45
|
+
|
46
|
+
@repo.index.index(**kwargs)
|
47
|
+
end
|
48
|
+
|
49
|
+
def index_document(*args, **kwargs)
|
50
|
+
warning("#{@repo}.#{@namespace}.index_document", "#{@repo.index}.index", 2023, 12)
|
51
|
+
|
52
|
+
@repo.index.index(*args, **kwargs)
|
53
|
+
end
|
54
|
+
|
55
|
+
def update!(**kwargs)
|
56
|
+
warning("#{@repo}.#{@namespace}.update!", "#{@repo.index}.update", 2023, 12)
|
57
|
+
|
58
|
+
@repo.index.update(**kwargs)
|
59
|
+
end
|
60
|
+
|
61
|
+
def update(**kwargs)
|
62
|
+
warning("#{@repo}.#{@namespace}.update", "#{@repo.index}.update", 2023, 12)
|
63
|
+
|
64
|
+
@repo.index.update(**kwargs)
|
65
|
+
end
|
66
|
+
|
67
|
+
def delete!(**kwargs)
|
68
|
+
warning("#{@repo}.#{@namespace}.delete!", "#{@repo.index}.delete", 2023, 12)
|
69
|
+
|
70
|
+
@repo.index.delete(**kwargs)
|
71
|
+
end
|
72
|
+
|
73
|
+
def delete(**kwargs)
|
74
|
+
warning("#{@repo}.#{@namespace}.delete", "#{@repo.index}.delete", 2023, 12)
|
75
|
+
|
76
|
+
@repo.index.delete(**kwargs)
|
77
|
+
end
|
78
|
+
|
79
|
+
def delete_document(*args, **kwargs)
|
80
|
+
warning("#{@repo}.#{@namespace}.delete_document", "#{@repo.index}.delete", 2023, 12)
|
81
|
+
|
82
|
+
@repo.index.delete(*args, **kwargs)
|
83
|
+
end
|
84
|
+
|
85
|
+
def count(**kwargs)
|
86
|
+
warning("#{@repo}.#{@namespace}.count", "#{@repo.index}.count", 2023, 12)
|
87
|
+
|
88
|
+
@repo.index.count(**kwargs)
|
89
|
+
end
|
90
|
+
|
91
|
+
def exist?(**kwargs)
|
92
|
+
warning("#{@repo}.#{@namespace}.exist?", "#{@repo.index}.exist?", 2023, 12)
|
93
|
+
|
94
|
+
@repo.index.exist?(**kwargs)
|
95
|
+
end
|
96
|
+
|
97
|
+
def find!(**kwargs)
|
98
|
+
warning("#{@repo}.#{@namespace}.find!", "#{@repo.index}.get", 2023, 12)
|
99
|
+
|
100
|
+
@repo.index.get(**kwargs)
|
101
|
+
end
|
102
|
+
|
103
|
+
def find(**kwargs)
|
104
|
+
warning("#{@repo}.#{@namespace}.find", "#{@repo.index}.get", 2023, 12)
|
105
|
+
|
106
|
+
@repo.index.get(**kwargs)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
class Serializer < Esse::Document
|
5
|
+
class << self
|
6
|
+
extend Esse::Deprecations::Deprecate
|
7
|
+
|
8
|
+
def inherited(subclass)
|
9
|
+
warning 'Esse::Serializer', 'Esse::Document', 2023, 12
|
10
|
+
super(subclass)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
require_relative 'deprecations/deprecate'
|
2
|
+
require_relative 'deprecations/serializer'
|
3
|
+
require_relative 'deprecations/index_backend_delegator'
|
4
|
+
require_relative 'deprecations/index'
|
5
|
+
require_relative 'deprecations/cluster'
|
6
|
+
require_relative 'deprecations/repository_backend_delegator'
|
7
|
+
require_relative 'deprecations/repository'
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
class Document
|
5
|
+
attr_reader :object, :options
|
6
|
+
|
7
|
+
def initialize(object, **options)
|
8
|
+
@object = object
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [String, Number] the document ID
|
13
|
+
# @abstract Override this method to return the document ID
|
14
|
+
def id
|
15
|
+
raise NotImplementedError, 'Override this method to return the document ID'
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [String, nil] the document type
|
19
|
+
# @abstract Override this method to return the document type
|
20
|
+
def type
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [Boolean] whether the document has type
|
25
|
+
def type?
|
26
|
+
!type.nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [String, nil] the document routing
|
30
|
+
# @abstract Override this method to return the document routing
|
31
|
+
def routing
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [Boolean] whether the document has routing
|
36
|
+
def routing?
|
37
|
+
!routing.nil?
|
38
|
+
end
|
39
|
+
|
40
|
+
# @TODO allow import, index, bulk to accept a suffix to tell which index to use
|
41
|
+
# def index_suffix
|
42
|
+
# nil
|
43
|
+
# end
|
44
|
+
|
45
|
+
# @return [Hash] the document meta
|
46
|
+
# @abstract Override this method to return the document meta
|
47
|
+
def meta
|
48
|
+
{}
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [Hash] the document source
|
52
|
+
# @abstract Override this method to return the document source
|
53
|
+
def source
|
54
|
+
{}
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [Hash] the document data
|
58
|
+
def to_h
|
59
|
+
source.merge(
|
60
|
+
_id: id,
|
61
|
+
).tap do |hash|
|
62
|
+
hash[:_type] = type if type
|
63
|
+
hash[:_routing] = routing if routing
|
64
|
+
hash.merge!(meta)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def to_bulk(data: true)
|
69
|
+
{ _id: id }.tap do |h|
|
70
|
+
h[:data] = source&.to_h if data
|
71
|
+
h[:_type] = type if type
|
72
|
+
h[:routing] = routing if routing?
|
73
|
+
h.merge!(meta)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def ignore_on_index?
|
78
|
+
id.nil?
|
79
|
+
end
|
80
|
+
|
81
|
+
def ignore_on_delete?
|
82
|
+
id.nil?
|
83
|
+
end
|
84
|
+
|
85
|
+
def ==(other)
|
86
|
+
other.is_a?(self.class) && (
|
87
|
+
id == other.id && type == other.type && routing == other.routing && meta == other.meta && source == other.source
|
88
|
+
)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
class DynamicTemplate
|
5
|
+
# @param [Array, Hash] value The list of dynamic_templates for mapping
|
6
|
+
def initialize(value)
|
7
|
+
@hash = normalize(value)
|
8
|
+
end
|
9
|
+
|
10
|
+
def merge!(value)
|
11
|
+
@hash = HashUtils.deep_merge(@hash, normalize(value))
|
12
|
+
end
|
13
|
+
|
14
|
+
def []=(key, value)
|
15
|
+
merge!(key => value)
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_a
|
19
|
+
@hash.map do |name, value|
|
20
|
+
{ name => value }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def any?
|
25
|
+
@hash.any?
|
26
|
+
end
|
27
|
+
|
28
|
+
def dup
|
29
|
+
self.class.new(@hash.dup)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def normalize(value)
|
35
|
+
case value
|
36
|
+
when Array
|
37
|
+
value.map { |v| normalize(v) }.reduce(&:merge)
|
38
|
+
when Hash
|
39
|
+
HashUtils.deep_transform_keys(value, &:to_sym)
|
40
|
+
end || {}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/esse/errors.rb
CHANGED
@@ -4,6 +4,66 @@ module Esse
|
|
4
4
|
class Error < StandardError
|
5
5
|
end
|
6
6
|
|
7
|
+
# @todo Rename this
|
8
|
+
class Transport
|
9
|
+
class ServerError < ::Esse::Error; end
|
10
|
+
|
11
|
+
# exception to raise when the cluster is readonly
|
12
|
+
class ReadonlyClusterError < ::Esse::Error
|
13
|
+
def initialize
|
14
|
+
super('You cannot perform this operation on a readonly cluster')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
ES_TRANSPORT_ERRORS = {
|
19
|
+
'MultipleChoices' => 'MultipleChoicesError', # 300
|
20
|
+
'MovedPermanently' => 'MovedPermanentlyError', # 301
|
21
|
+
'Found' => 'FoundError', # 302
|
22
|
+
'SeeOther' => 'SeeOtherError', # 303
|
23
|
+
'NotModified' => 'NotModifiedError', # 304
|
24
|
+
'UseProxy' => 'UseProxyError', # 305
|
25
|
+
'TemporaryRedirect' => 'TemporaryRedirectError', # 307
|
26
|
+
'PermanentRedirect' => 'PermanentRedirectError', # 308
|
27
|
+
'BadRequest' => 'BadRequestError', # 400
|
28
|
+
'Unauthorized' => 'UnauthorizedError', # 401
|
29
|
+
'PaymentRequired' => 'PaymentRequiredError', # 402
|
30
|
+
'Forbidden' => 'ForbiddenError', # 403
|
31
|
+
'NotFound' => 'NotFoundError', # 404
|
32
|
+
'MethodNotAllowed' => 'MethodNotAllowedError', # 405
|
33
|
+
'NotAcceptable' => 'NotAcceptableError', # 406
|
34
|
+
'ProxyAuthenticationRequired' => 'ProxyAuthenticationRequiredError', # 407
|
35
|
+
'RequestTimeout' => 'RequestTimeoutError', # 408
|
36
|
+
'Conflict' => 'ConflictError', # 409
|
37
|
+
'Gone' => 'GoneError', # 410
|
38
|
+
'LengthRequired' => 'LengthRequiredError', # 411
|
39
|
+
'PreconditionFailed' => 'PreconditionFailedError', # 412
|
40
|
+
'RequestEntityTooLarge' => 'RequestEntityTooLargeError', # 413
|
41
|
+
'RequestURITooLong' => 'RequestURITooLongError', # 414
|
42
|
+
'UnsupportedMediaType' => 'UnsupportedMediaTypeError', # 415
|
43
|
+
'RequestedRangeNotSatisfiable' => 'RequestedRangeNotSatisfiableError', # 416
|
44
|
+
'ExpectationFailed' => 'ExpectationFailedError', # 417
|
45
|
+
'ImATeapot' => 'ImATeapotError', # 418
|
46
|
+
'TooManyConnectionsFromThisIP' => 'TooManyConnectionsFromThisIPError', # 421
|
47
|
+
'UpgradeRequired' => 'UpgradeRequiredError', # 426
|
48
|
+
'BlockedByWindowsParentalControls' => 'BlockedByWindowsParentalControlsError', # 450
|
49
|
+
'RequestHeaderTooLarge' => 'RequestHeaderTooLargeError', # 494
|
50
|
+
'HTTPToHTTPS' => 'HTTPToHTTPSError', # 497
|
51
|
+
'ClientClosedRequest' => 'ClientClosedRequestError', # 499
|
52
|
+
'InternalServerError' => 'InternalServerError', # 500
|
53
|
+
'NotImplemented' => 'NotImplementedError', # 501
|
54
|
+
'BadGateway' => 'BadGatewayError', # 502
|
55
|
+
'ServiceUnavailable' => 'ServiceUnavailableError', # 503
|
56
|
+
'GatewayTimeout' => 'GatewayTimeoutError', # 504
|
57
|
+
'HTTPVersionNotSupported' => 'HTTPVersionNotSupportedError', # 505
|
58
|
+
'VariantAlsoNegotiates' => 'VariantAlsoNegotiatesError', # 506
|
59
|
+
'NotExtended' => 'NotExtendedError', # 510
|
60
|
+
}
|
61
|
+
|
62
|
+
ERRORS = ES_TRANSPORT_ERRORS.each_with_object({}) do |(transport_name, esse_name), memo|
|
63
|
+
memo[transport_name] = const_set esse_name, Class.new(ServerError)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
7
67
|
module Events
|
8
68
|
class UnregisteredEventError < ::Esse::Error
|
9
69
|
def initialize(object_or_event_id)
|
@@ -42,6 +102,4 @@ module Esse
|
|
42
102
|
class InvalidOption < Error
|
43
103
|
end
|
44
104
|
end
|
45
|
-
|
46
|
-
# Elasticsearch::Transport::Transport::Errors::NotFound
|
47
105
|
end
|
data/lib/esse/events/event.rb
CHANGED
@@ -3,6 +3,10 @@
|
|
3
3
|
module Esse
|
4
4
|
module Events
|
5
5
|
class Event
|
6
|
+
extend Forwardable
|
7
|
+
def_delegators :@payload, :[], :fetch, :to_h, :key?
|
8
|
+
alias_method :to_hash, :to_h
|
9
|
+
|
6
10
|
attr_reader :id
|
7
11
|
|
8
12
|
# Initialize a new event
|
@@ -18,25 +22,6 @@ module Esse
|
|
18
22
|
@payload = payload
|
19
23
|
end
|
20
24
|
|
21
|
-
# Get data from the payload
|
22
|
-
#
|
23
|
-
# @param [String,Symbol] name
|
24
|
-
#
|
25
|
-
# @api public
|
26
|
-
def [](name)
|
27
|
-
@payload.fetch(name)
|
28
|
-
end
|
29
|
-
|
30
|
-
# Coerce an event to a hash
|
31
|
-
#
|
32
|
-
# @return [Hash]
|
33
|
-
#
|
34
|
-
# @api public
|
35
|
-
def to_h
|
36
|
-
@payload
|
37
|
-
end
|
38
|
-
alias_method :to_hash, :to_h
|
39
|
-
|
40
25
|
# Get or set a payload
|
41
26
|
#
|
42
27
|
# @overload
|
data/lib/esse/events.rb
CHANGED
@@ -38,12 +38,23 @@ module Esse
|
|
38
38
|
module Events
|
39
39
|
include Publisher
|
40
40
|
|
41
|
+
register_event 'elasticsearch.bulk'
|
41
42
|
register_event 'elasticsearch.close'
|
42
|
-
register_event 'elasticsearch.open'
|
43
43
|
register_event 'elasticsearch.create_index'
|
44
44
|
register_event 'elasticsearch.delete_index'
|
45
|
+
register_event 'elasticsearch.execute_search_query'
|
46
|
+
register_event 'elasticsearch.index_exist'
|
47
|
+
register_event 'elasticsearch.open'
|
48
|
+
register_event 'elasticsearch.refresh'
|
49
|
+
register_event 'elasticsearch.search'
|
50
|
+
register_event 'elasticsearch.update_aliases'
|
45
51
|
register_event 'elasticsearch.update_mapping'
|
46
52
|
register_event 'elasticsearch.update_settings'
|
47
|
-
register_event 'elasticsearch.
|
53
|
+
register_event 'elasticsearch.index'
|
54
|
+
register_event 'elasticsearch.update'
|
55
|
+
register_event 'elasticsearch.delete'
|
56
|
+
register_event 'elasticsearch.exist'
|
57
|
+
register_event 'elasticsearch.count'
|
58
|
+
register_event 'elasticsearch.get'
|
48
59
|
end
|
49
60
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Esse
|
4
|
+
class HashDocument < Esse::Document
|
5
|
+
META_KEYS = %i[_id _type _routing routing].freeze
|
6
|
+
|
7
|
+
def initialize(object)
|
8
|
+
@object = object
|
9
|
+
@options = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [String, Number] the document ID
|
13
|
+
def id
|
14
|
+
object['_id'] || object[:_id] || object['id'] || object[:id]
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [String, nil] the document type
|
18
|
+
def type
|
19
|
+
object['_type'] || object[:_type]
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [String, nil] the document routing
|
23
|
+
def routing
|
24
|
+
object['_routing'] || object[:_routing] || object['routing'] || object[:routing]
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [Hash] the document meta
|
28
|
+
def meta
|
29
|
+
{}
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [Hash] the document source
|
33
|
+
# @abstract Override this method to return the document source
|
34
|
+
def source
|
35
|
+
object.reject { |key, _| META_KEYS.include?(key.to_sym) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|