meilisearch 0.12.0 → 0.15.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 +4 -4
- data/lib/meilisearch/client.rb +22 -22
- data/lib/meilisearch/error.rb +11 -9
- data/lib/meilisearch/http_request.rb +4 -2
- data/lib/meilisearch/index.rb +23 -30
- data/lib/meilisearch/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e60c9c4ac5631947edf24d990c37fd06e09bbbb59b6eabd554fcacc7d8f231ed
|
4
|
+
data.tar.gz: 5373d86aacf0791fa30f068d97ba9f5b857fa75930c3580ddd20449cd2db8e7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7496a3f2ea08ed35ff277c0176c52fe8120290678a1594bd49637e96b03e825aad11bfd55370040fd3563577fea9fbc6a3a7df335bb400a78d2a46707072ff2
|
7
|
+
data.tar.gz: db46abc6f60ec202641480eb0ac2232b2892ea966590d955735f4ab7a5ce98cc52493c87da7bb1ccc5d4399f95b0b4c7639619ad0a30ed4caa4f21e3af7aabf3
|
data/lib/meilisearch/client.rb
CHANGED
@@ -10,26 +10,24 @@ module MeiliSearch
|
|
10
10
|
http_get '/indexes'
|
11
11
|
end
|
12
12
|
|
13
|
-
def show_index(index_uid)
|
14
|
-
index_object(index_uid).show
|
15
|
-
end
|
16
|
-
|
17
13
|
# Usage:
|
18
14
|
# client.create_index('indexUID')
|
19
15
|
# client.create_index('indexUID', primaryKey: 'id')
|
20
16
|
def create_index(index_uid, options = {})
|
21
17
|
body = options.merge(uid: index_uid)
|
22
|
-
|
23
|
-
index_object(
|
18
|
+
index_hash = http_post '/indexes', body
|
19
|
+
index_object(index_hash['uid'], index_hash['primaryKey'])
|
24
20
|
end
|
25
21
|
|
26
22
|
def get_or_create_index(index_uid, options = {})
|
27
23
|
begin
|
28
|
-
|
24
|
+
index_instance = fetch_index(index_uid)
|
29
25
|
rescue ApiError => e
|
30
|
-
raise e unless e.code == '
|
26
|
+
raise e unless e.code == 'index_not_found'
|
27
|
+
|
28
|
+
index_instance = create_index(index_uid, options)
|
31
29
|
end
|
32
|
-
|
30
|
+
index_instance
|
33
31
|
end
|
34
32
|
|
35
33
|
def delete_index(index_uid)
|
@@ -41,7 +39,10 @@ module MeiliSearch
|
|
41
39
|
def index(index_uid)
|
42
40
|
index_object(index_uid)
|
43
41
|
end
|
44
|
-
|
42
|
+
|
43
|
+
def fetch_index(index_uid)
|
44
|
+
index_object(index_uid).fetch_info
|
45
|
+
end
|
45
46
|
|
46
47
|
### KEYS
|
47
48
|
|
@@ -63,32 +64,31 @@ module MeiliSearch
|
|
63
64
|
http_get '/health'
|
64
65
|
end
|
65
66
|
|
66
|
-
def update_health(bool)
|
67
|
-
http_put '/health', health: bool
|
68
|
-
end
|
69
|
-
|
70
67
|
### STATS
|
71
68
|
|
72
69
|
def version
|
73
70
|
http_get '/version'
|
74
71
|
end
|
75
72
|
|
76
|
-
def
|
77
|
-
http_get '/
|
73
|
+
def stats
|
74
|
+
http_get '/stats'
|
78
75
|
end
|
79
76
|
|
80
|
-
|
81
|
-
|
77
|
+
### DUMPS
|
78
|
+
|
79
|
+
def create_dump
|
80
|
+
http_post '/dumps'
|
82
81
|
end
|
83
82
|
|
84
|
-
def
|
85
|
-
http_get
|
83
|
+
def dump_status(dump_uid)
|
84
|
+
http_get "/dumps/#{dump_uid}/status"
|
86
85
|
end
|
86
|
+
alias get_dump_status dump_status
|
87
87
|
|
88
88
|
private
|
89
89
|
|
90
|
-
def index_object(uid)
|
91
|
-
Index.new(uid, @base_url, @api_key)
|
90
|
+
def index_object(uid, primary_key = nil)
|
91
|
+
Index.new(uid, @base_url, @api_key, primary_key)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
data/lib/meilisearch/error.rb
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
|
3
3
|
module MeiliSearch
|
4
4
|
class ApiError < StandardError
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
# :http_code # e.g. 400, 404...
|
6
|
+
# :http_message # e.g. Bad Request, Not Found...
|
7
|
+
# :http_body # The response body received from the MeiliSearch API
|
8
|
+
# :ms_code # The error code given by the MeiliSearch API
|
9
|
+
# :ms_type # The error type given by the MeiliSearch API
|
10
|
+
# :ms_link # The documentation link given by the MeiliSearch API
|
11
|
+
# :ms_message # The error message given by the MeiliSearch API
|
12
|
+
# :message # The detailed error message of this error class
|
13
|
+
|
14
|
+
attr_reader :http_code, :http_message, :http_body, :ms_code, :ms_type, :ms_link, :ms_message, :message
|
13
15
|
|
14
16
|
alias code ms_code
|
15
17
|
alias type ms_type
|
@@ -21,7 +23,7 @@ module MeiliSearch
|
|
21
23
|
@http_message = http_message
|
22
24
|
@ms_message ||= 'MeiliSearch API has not returned any error message'
|
23
25
|
@ms_link ||= '<no documentation link found>'
|
24
|
-
@message = "#{http_code} #{http_message} - #{@ms_message
|
26
|
+
@message = "#{http_code} #{http_message} - #{@ms_message}. See #{ms_link}."
|
25
27
|
super(details)
|
26
28
|
end
|
27
29
|
|
@@ -7,9 +7,10 @@ module MeiliSearch
|
|
7
7
|
class HTTPRequest
|
8
8
|
include HTTParty
|
9
9
|
|
10
|
-
def initialize(url, api_key = nil)
|
10
|
+
def initialize(url, api_key = nil, options = {})
|
11
11
|
@base_url = url
|
12
12
|
@api_key = api_key
|
13
|
+
@options = options
|
13
14
|
@headers = {
|
14
15
|
'Content-Type' => 'application/json',
|
15
16
|
'X-Meili-API-Key' => api_key
|
@@ -67,7 +68,8 @@ module MeiliSearch
|
|
67
68
|
headers: @headers,
|
68
69
|
query: query_params,
|
69
70
|
body: body,
|
70
|
-
timeout: 1
|
71
|
+
timeout: @options[:timeout] || 1,
|
72
|
+
max_retries: @options[:max_retries] || 0
|
71
73
|
}.compact
|
72
74
|
end
|
73
75
|
|
data/lib/meilisearch/index.rb
CHANGED
@@ -5,20 +5,24 @@ require 'timeout'
|
|
5
5
|
|
6
6
|
module MeiliSearch
|
7
7
|
class Index < HTTPRequest
|
8
|
-
attr_reader :uid
|
8
|
+
attr_reader :uid, :primary_key
|
9
9
|
|
10
|
-
def initialize(index_uid, url, api_key = nil)
|
10
|
+
def initialize(index_uid, url, api_key = nil, primary_key = nil)
|
11
11
|
@uid = index_uid
|
12
|
+
@primary_key = primary_key
|
12
13
|
super(url, api_key)
|
13
14
|
end
|
14
15
|
|
15
|
-
def
|
16
|
-
http_get "/indexes/#{@uid}"
|
16
|
+
def fetch_info
|
17
|
+
index_hash = http_get "/indexes/#{@uid}"
|
18
|
+
@primary_key = index_hash['primaryKey']
|
19
|
+
self
|
17
20
|
end
|
18
|
-
alias show_index show
|
19
21
|
|
20
22
|
def update(body)
|
21
|
-
http_put "/indexes/#{@uid}", body
|
23
|
+
index_hash = http_put "/indexes/#{@uid}", body
|
24
|
+
@primary_key = index_hash['primaryKey']
|
25
|
+
self
|
22
26
|
end
|
23
27
|
alias update_index update
|
24
28
|
|
@@ -27,10 +31,10 @@ module MeiliSearch
|
|
27
31
|
end
|
28
32
|
alias delete_index delete
|
29
33
|
|
30
|
-
def
|
31
|
-
|
34
|
+
def fetch_primary_key
|
35
|
+
fetch_info.primary_key
|
32
36
|
end
|
33
|
-
alias get_primary_key
|
37
|
+
alias get_primary_key fetch_primary_key
|
34
38
|
|
35
39
|
### DOCUMENTS
|
36
40
|
|
@@ -81,16 +85,8 @@ module MeiliSearch
|
|
81
85
|
### SEARCH
|
82
86
|
|
83
87
|
def search(query, options = {})
|
84
|
-
parsed_options = options.
|
85
|
-
|
86
|
-
[k, v.inspect]
|
87
|
-
elsif v.is_a?(Array)
|
88
|
-
[k, v.join(',')]
|
89
|
-
else
|
90
|
-
[k, v]
|
91
|
-
end
|
92
|
-
end.to_h
|
93
|
-
http_get "/indexes/#{@uid}/search", { q: query }.merge(parsed_options)
|
88
|
+
parsed_options = options.compact
|
89
|
+
http_post "/indexes/#{@uid}/search", { q: query }.merge(parsed_options)
|
94
90
|
end
|
95
91
|
|
96
92
|
### UPDATES
|
@@ -148,6 +144,7 @@ module MeiliSearch
|
|
148
144
|
def update_settings(settings)
|
149
145
|
http_post "/indexes/#{@uid}/settings", settings
|
150
146
|
end
|
147
|
+
alias settings= update_settings
|
151
148
|
|
152
149
|
def reset_settings
|
153
150
|
http_delete "/indexes/#{@uid}/settings"
|
@@ -163,6 +160,7 @@ module MeiliSearch
|
|
163
160
|
def update_ranking_rules(ranking_rules)
|
164
161
|
http_post "/indexes/#{@uid}/settings/ranking-rules", ranking_rules
|
165
162
|
end
|
163
|
+
alias ranking_rules= update_ranking_rules
|
166
164
|
|
167
165
|
def reset_ranking_rules
|
168
166
|
http_delete "/indexes/#{@uid}/settings/ranking-rules"
|
@@ -178,6 +176,7 @@ module MeiliSearch
|
|
178
176
|
def update_synonyms(synonyms)
|
179
177
|
http_post "/indexes/#{@uid}/settings/synonyms", synonyms
|
180
178
|
end
|
179
|
+
alias synonyms= update_synonyms
|
181
180
|
|
182
181
|
def reset_synonyms
|
183
182
|
http_delete "/indexes/#{@uid}/settings/synonyms"
|
@@ -194,6 +193,7 @@ module MeiliSearch
|
|
194
193
|
body = stop_words.is_a?(Array) ? stop_words : [stop_words]
|
195
194
|
http_post "/indexes/#{@uid}/settings/stop-words", body
|
196
195
|
end
|
196
|
+
alias stop_words= update_stop_words
|
197
197
|
|
198
198
|
def reset_stop_words
|
199
199
|
http_delete "/indexes/#{@uid}/settings/stop-words"
|
@@ -209,6 +209,7 @@ module MeiliSearch
|
|
209
209
|
def update_distinct_attribute(distinct_attribute)
|
210
210
|
http_post "/indexes/#{@uid}/settings/distinct-attribute", distinct_attribute
|
211
211
|
end
|
212
|
+
alias distinct_attribute= update_distinct_attribute
|
212
213
|
|
213
214
|
def reset_distinct_attribute
|
214
215
|
http_delete "/indexes/#{@uid}/settings/distinct-attribute"
|
@@ -224,6 +225,7 @@ module MeiliSearch
|
|
224
225
|
def update_searchable_attributes(searchable_attributes)
|
225
226
|
http_post "/indexes/#{@uid}/settings/searchable-attributes", searchable_attributes
|
226
227
|
end
|
228
|
+
alias searchable_attributes= update_searchable_attributes
|
227
229
|
|
228
230
|
def reset_searchable_attributes
|
229
231
|
http_delete "/indexes/#{@uid}/settings/searchable-attributes"
|
@@ -239,22 +241,12 @@ module MeiliSearch
|
|
239
241
|
def update_displayed_attributes(displayed_attributes)
|
240
242
|
http_post "/indexes/#{@uid}/settings/displayed-attributes", displayed_attributes
|
241
243
|
end
|
244
|
+
alias displayed_attributes= update_displayed_attributes
|
242
245
|
|
243
246
|
def reset_displayed_attributes
|
244
247
|
http_delete "/indexes/#{@uid}/settings/displayed-attributes"
|
245
248
|
end
|
246
249
|
|
247
|
-
### SETTINGS - ACCEPT NEW FIELS VALUE
|
248
|
-
|
249
|
-
def accept_new_fields
|
250
|
-
http_get "/indexes/#{@uid}/settings/accept-new-fields"
|
251
|
-
end
|
252
|
-
alias get_accept_new_fields accept_new_fields
|
253
|
-
|
254
|
-
def update_accept_new_fields(accept_new_fields)
|
255
|
-
http_post "/indexes/#{@uid}/settings/accept-new-fields", accept_new_fields
|
256
|
-
end
|
257
|
-
|
258
250
|
### SETTINGS - ATTRIBUTES FOR FACETING
|
259
251
|
|
260
252
|
def attributes_for_faceting
|
@@ -265,6 +257,7 @@ module MeiliSearch
|
|
265
257
|
def update_attributes_for_faceting(attributes_for_faceting)
|
266
258
|
http_post "/indexes/#{@uid}/settings/attributes-for-faceting", attributes_for_faceting
|
267
259
|
end
|
260
|
+
alias attributes_for_faceting= update_attributes_for_faceting
|
268
261
|
|
269
262
|
def reset_attributes_for_faceting
|
270
263
|
http_delete "/indexes/#{@uid}/settings/attributes-for-faceting"
|
data/lib/meilisearch/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meilisearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Meili
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
|
-
rubygems_version: 3.
|
64
|
+
rubygems_version: 3.1.4
|
65
65
|
signing_key:
|
66
66
|
specification_version: 4
|
67
67
|
summary: An easy-to-use ruby client for Meilisearch API
|