meilisearch 0.12.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|