Class: MeiliSearch::Index

Inherits:
HTTPRequest show all
Defined in:
lib/meilisearch/index.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from HTTPRequest

#http_delete, #http_get, #http_post, #http_put

Constructor Details

#initialize(index_uid, url, api_key = nil) ⇒ Index

Returns a new instance of Index.



10
11
12
13
# File 'lib/meilisearch/index.rb', line 10

def initialize(index_uid, url, api_key = nil)
  @uid = index_uid
  super(url, api_key)
end

Instance Attribute Details

#uidObject (readonly)

Returns the value of attribute uid.



8
9
10
# File 'lib/meilisearch/index.rb', line 8

def uid
  @uid
end

Instance Method Details

#add_documents(documents, primary_key = nil) ⇒ Object Also known as: replace_documents, add_or_replace_documents



49
50
51
52
# File 'lib/meilisearch/index.rb', line 49

def add_documents(documents, primary_key = nil)
  documents = [documents] if documents.is_a?(Hash)
  http_post "/indexes/#{@uid}/documents", documents, { primaryKey: primary_key }.compact
end

#attributes_for_facetingObject Also known as: get_attributes_for_faceting

SETTINGS - ATTRIBUTES FOR FACETING



241
242
243
# File 'lib/meilisearch/index.rb', line 241

def attributes_for_faceting
  http_get "/indexes/#{@uid}/settings/attributes-for-faceting"
end

#deleteObject Also known as: delete_index



25
26
27
# File 'lib/meilisearch/index.rb', line 25

def delete
  http_delete "/indexes/#{@uid}"
end

#delete_all_documentsObject



77
78
79
# File 'lib/meilisearch/index.rb', line 77

def delete_all_documents
  http_delete "/indexes/#{@uid}/documents"
end

#delete_document(document_id) ⇒ Object Also known as: delete_one_document



71
72
73
74
# File 'lib/meilisearch/index.rb', line 71

def delete_document(document_id)
  encode_document = URI.encode_www_form_component(document_id)
  http_delete "/indexes/#{@uid}/documents/#{encode_document}"
end

#delete_documents(documents_ids) ⇒ Object Also known as: delete_multiple_documents



62
63
64
65
66
67
68
# File 'lib/meilisearch/index.rb', line 62

def delete_documents(documents_ids)
  if documents_ids.is_a?(Array)
    http_post "/indexes/#{@uid}/documents/delete-batch", documents_ids
  else
    delete_document(documents_ids)
  end
end

#displayed_attributesObject Also known as: get_displayed_attributes

SETTINGS - DISPLAYED ATTRIBUTES



226
227
228
# File 'lib/meilisearch/index.rb', line 226

def displayed_attributes
  http_get "/indexes/#{@uid}/settings/displayed-attributes"
end

#distinct_attributeObject Also known as: get_distinct_attribute

SETTINGS - DINSTINCT ATTRIBUTE



196
197
198
# File 'lib/meilisearch/index.rb', line 196

def distinct_attribute
  http_get "/indexes/#{@uid}/settings/distinct-attribute"
end

#document(document_id) ⇒ Object Also known as: get_document, get_one_document

DOCUMENTS



37
38
39
40
# File 'lib/meilisearch/index.rb', line 37

def document(document_id)
  encode_document = URI.encode_www_form_component(document_id)
  http_get "/indexes/#{@uid}/documents/#{encode_document}"
end

#documents(options = {}) ⇒ Object Also known as: get_documents



44
45
46
# File 'lib/meilisearch/index.rb', line 44

def documents(options = {})
  http_get "/indexes/#{@uid}/documents", options
end

#fields_distributionObject



129
130
131
# File 'lib/meilisearch/index.rb', line 129

def fields_distribution
  stats['fieldsDistribution']
end

#get_all_update_statusObject



94
95
96
# File 'lib/meilisearch/index.rb', line 94

def get_all_update_status
  http_get "/indexes/#{@uid}/updates"
end

#get_update_status(update_id) ⇒ Object

UPDATES



90
91
92
# File 'lib/meilisearch/index.rb', line 90

def get_update_status(update_id)
  http_get "/indexes/#{@uid}/updates/#{update_id}"
end

#indexing?Boolean

Returns:

  • (Boolean)


121
122
123
# File 'lib/meilisearch/index.rb', line 121

def indexing?
  stats['isIndexing']
end

#last_updateObject



125
126
127
# File 'lib/meilisearch/index.rb', line 125

def last_update
  stats['lastUpdate']
end

#number_of_documentsObject



117
118
119
# File 'lib/meilisearch/index.rb', line 117

def number_of_documents
  stats['numberOfDocuments']
end

#primary_keyObject Also known as: get_primary_key



30
31
32
# File 'lib/meilisearch/index.rb', line 30

def primary_key
  show['primaryKey']
end

#ranking_rulesObject Also known as: get_ranking_rules

SETTINGS - RANKING RULES



150
151
152
# File 'lib/meilisearch/index.rb', line 150

def ranking_rules
  http_get "/indexes/#{@uid}/settings/ranking-rules"
end

#reset_attributes_for_facetingObject



250
251
252
# File 'lib/meilisearch/index.rb', line 250

def reset_attributes_for_faceting
  http_delete "/indexes/#{@uid}/settings/attributes-for-faceting"
end

#reset_displayed_attributesObject



235
236
237
# File 'lib/meilisearch/index.rb', line 235

def reset_displayed_attributes
  http_delete "/indexes/#{@uid}/settings/displayed-attributes"
end

#reset_distinct_attributeObject



205
206
207
# File 'lib/meilisearch/index.rb', line 205

def reset_distinct_attribute
  http_delete "/indexes/#{@uid}/settings/distinct-attribute"
end

#reset_ranking_rulesObject



159
160
161
# File 'lib/meilisearch/index.rb', line 159

def reset_ranking_rules
  http_delete "/indexes/#{@uid}/settings/ranking-rules"
end

#reset_searchable_attributesObject



220
221
222
# File 'lib/meilisearch/index.rb', line 220

def reset_searchable_attributes
  http_delete "/indexes/#{@uid}/settings/searchable-attributes"
end

#reset_settingsObject



144
145
146
# File 'lib/meilisearch/index.rb', line 144

def reset_settings
  http_delete "/indexes/#{@uid}/settings"
end

#reset_stop_wordsObject



190
191
192
# File 'lib/meilisearch/index.rb', line 190

def reset_stop_words
  http_delete "/indexes/#{@uid}/settings/stop-words"
end

#reset_synonymsObject



174
175
176
# File 'lib/meilisearch/index.rb', line 174

def reset_synonyms
  http_delete "/indexes/#{@uid}/settings/synonyms"
end

#search(query, options = {}) ⇒ Object

SEARCH



83
84
85
86
# File 'lib/meilisearch/index.rb', line 83

def search(query, options = {})
  parsed_options = options.compact
  http_post "/indexes/#{@uid}/search", { q: query }.merge(parsed_options)
end

#searchable_attributesObject Also known as: get_searchable_attributes

SETTINGS - SEARCHABLE ATTRIBUTES



211
212
213
# File 'lib/meilisearch/index.rb', line 211

def searchable_attributes
  http_get "/indexes/#{@uid}/settings/searchable-attributes"
end

#settingsObject Also known as: get_settings

SETTINGS - GENERAL



135
136
137
# File 'lib/meilisearch/index.rb', line 135

def settings
  http_get "/indexes/#{@uid}/settings"
end

#showObject Also known as: show_index



15
16
17
# File 'lib/meilisearch/index.rb', line 15

def show
  http_get "/indexes/#{@uid}"
end

#statsObject

STATS



113
114
115
# File 'lib/meilisearch/index.rb', line 113

def stats
  http_get "/indexes/#{@uid}/stats"
end

#stop_wordsObject Also known as: get_stop_words

SETTINGS - STOP-WORDS



180
181
182
# File 'lib/meilisearch/index.rb', line 180

def stop_words
  http_get "/indexes/#{@uid}/settings/stop-words"
end

#synonymsObject Also known as: get_synonyms

SETTINGS - SYNONYMS



165
166
167
# File 'lib/meilisearch/index.rb', line 165

def synonyms
  http_get "/indexes/#{@uid}/settings/synonyms"
end

#update(body) ⇒ Object Also known as: update_index



20
21
22
# File 'lib/meilisearch/index.rb', line 20

def update(body)
  http_put "/indexes/#{@uid}", body
end

#update_attributes_for_faceting(attributes_for_faceting) ⇒ Object



246
247
248
# File 'lib/meilisearch/index.rb', line 246

def update_attributes_for_faceting(attributes_for_faceting)
  http_post "/indexes/#{@uid}/settings/attributes-for-faceting", attributes_for_faceting
end

#update_displayed_attributes(displayed_attributes) ⇒ Object



231
232
233
# File 'lib/meilisearch/index.rb', line 231

def update_displayed_attributes(displayed_attributes)
  http_post "/indexes/#{@uid}/settings/displayed-attributes", displayed_attributes
end

#update_distinct_attribute(distinct_attribute) ⇒ Object



201
202
203
# File 'lib/meilisearch/index.rb', line 201

def update_distinct_attribute(distinct_attribute)
  http_post "/indexes/#{@uid}/settings/distinct-attribute", distinct_attribute
end

#update_documents(documents, primary_key = nil) ⇒ Object Also known as: add_or_update_documents



56
57
58
59
# File 'lib/meilisearch/index.rb', line 56

def update_documents(documents, primary_key = nil)
  documents = [documents] if documents.is_a?(Hash)
  http_put "/indexes/#{@uid}/documents", documents, { primaryKey: primary_key }.compact
end

#update_ranking_rules(ranking_rules) ⇒ Object



155
156
157
# File 'lib/meilisearch/index.rb', line 155

def update_ranking_rules(ranking_rules)
  http_post "/indexes/#{@uid}/settings/ranking-rules", ranking_rules
end

#update_searchable_attributes(searchable_attributes) ⇒ Object



216
217
218
# File 'lib/meilisearch/index.rb', line 216

def update_searchable_attributes(searchable_attributes)
  http_post "/indexes/#{@uid}/settings/searchable-attributes", searchable_attributes
end

#update_settings(settings) ⇒ Object



140
141
142
# File 'lib/meilisearch/index.rb', line 140

def update_settings(settings)
  http_post "/indexes/#{@uid}/settings", settings
end

#update_stop_words(stop_words) ⇒ Object



185
186
187
188
# File 'lib/meilisearch/index.rb', line 185

def update_stop_words(stop_words)
  body = stop_words.is_a?(Array) ? stop_words : [stop_words]
  http_post "/indexes/#{@uid}/settings/stop-words", body
end

#update_synonyms(synonyms) ⇒ Object



170
171
172
# File 'lib/meilisearch/index.rb', line 170

def update_synonyms(synonyms)
  http_post "/indexes/#{@uid}/settings/synonyms", synonyms
end

#wait_for_pending_update(update_id, timeout_in_ms = 5000, interval_in_ms = 50) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/meilisearch/index.rb', line 98

def wait_for_pending_update(update_id, timeout_in_ms = 5000, interval_in_ms = 50)
  Timeout.timeout(timeout_in_ms.to_f / 1000) do
    loop do
      get_update = get_update_status(update_id)
      return get_update if get_update['status'] != 'enqueued'

      sleep interval_in_ms.to_f / 1000
    end
  end
rescue Timeout::Error
  raise MeiliSearch::TimeoutError
end