class MeiliSearch::Index

Attributes

primary_key[R]
uid[R]

Public Class Methods

new(index_uid, url, api_key = nil, primary_key = nil, options = {}) click to toggle source
Calls superclass method MeiliSearch::HTTPRequest::new
# File lib/meilisearch/index.rb, line 10
def initialize(index_uid, url, api_key = nil, primary_key = nil, options = {})
  @uid = index_uid
  @primary_key = primary_key
  super(url, api_key, options)
end

Public Instance Methods

achieved_upate?(update) click to toggle source
# File lib/meilisearch/index.rb, line 132
def achieved_upate?(update)
  update['status'] != 'enqueued' && update['status'] != 'processing'
end
add_documents(documents, primary_key = nil) click to toggle source
# File lib/meilisearch/index.rb, line 53
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
add_documents!(documents, primary_key = nil) click to toggle source
# File lib/meilisearch/index.rb, line 60
def add_documents!(documents, primary_key = nil)
  update = add_documents(documents, primary_key)
  wait_for_pending_update(update['updateId'])
end
add_or_replace_documents(documents, primary_key = nil)
Alias for: add_documents
add_or_replace_documents!(documents, primary_key = nil)
Alias for: add_documents!
add_or_update_documents(documents, primary_key = nil)
Alias for: update_documents
add_or_update_documents!(documents, primary_key = nil)
Alias for: update_documents!
delete() click to toggle source
# File lib/meilisearch/index.rb, line 29
def delete
  http_delete "/indexes/#{@uid}"
end
Also aliased as: delete_index
delete_all_documents() click to toggle source
# File lib/meilisearch/index.rb, line 106
def delete_all_documents
  http_delete "/indexes/#{@uid}/documents"
end
delete_all_documents!() click to toggle source
# File lib/meilisearch/index.rb, line 110
def delete_all_documents!
  update = delete_all_documents
  wait_for_pending_update(update['updateId'])
end
delete_document(document_id) click to toggle source
# File lib/meilisearch/index.rb, line 94
def delete_document(document_id)
  encode_document = URI.encode_www_form_component(document_id)
  http_delete "/indexes/#{@uid}/documents/#{encode_document}"
end
Also aliased as: delete_one_document
delete_document!(document_id) click to toggle source
# File lib/meilisearch/index.rb, line 100
def delete_document!(document_id)
  update = delete_document(document_id)
  wait_for_pending_update(update['updateId'])
end
Also aliased as: delete_one_document!
delete_documents(documents_ids) click to toggle source
# File lib/meilisearch/index.rb, line 79
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
Also aliased as: delete_multiple_documents
delete_documents!(documents_ids) click to toggle source
# File lib/meilisearch/index.rb, line 88
def delete_documents!(documents_ids)
  update = delete_documents(documents_ids)
  wait_for_pending_update(update['updateId'])
end
Also aliased as: delete_multiple_documents!
delete_index()
Alias for: delete
delete_multiple_documents(documents_ids)
Alias for: delete_documents
delete_multiple_documents!(documents_ids)
Alias for: delete_documents!
delete_one_document(document_id)
Alias for: delete_document
delete_one_document!(document_id)
Alias for: delete_document!
displayed_attributes() click to toggle source

SETTINGS - DISPLAYED ATTRIBUTES

# File lib/meilisearch/index.rb, line 270
def displayed_attributes
  http_get "/indexes/#{@uid}/settings/displayed-attributes"
end
Also aliased as: get_displayed_attributes
displayed_attributes=(displayed_attributes)
distinct_attribute() click to toggle source

SETTINGS - DINSTINCT ATTRIBUTE

# File lib/meilisearch/index.rb, line 238
def distinct_attribute
  http_get "/indexes/#{@uid}/settings/distinct-attribute"
end
Also aliased as: get_distinct_attribute
distinct_attribute=(distinct_attribute)
document(document_id) click to toggle source

DOCUMENTS

# File lib/meilisearch/index.rb, line 41
def document(document_id)
  encode_document = URI.encode_www_form_component(document_id)
  http_get "/indexes/#{@uid}/documents/#{encode_document}"
end
Also aliased as: get_document, get_one_document
documents(options = {}) click to toggle source
# File lib/meilisearch/index.rb, line 48
def documents(options = {})
  http_get "/indexes/#{@uid}/documents", options
end
Also aliased as: get_documents
fetch_info() click to toggle source
# File lib/meilisearch/index.rb, line 16
def fetch_info
  index_hash = http_get "/indexes/#{@uid}"
  @primary_key = index_hash['primaryKey']
  self
end
fetch_primary_key() click to toggle source
# File lib/meilisearch/index.rb, line 34
def fetch_primary_key
  fetch_info.primary_key
end
Also aliased as: get_primary_key
field_distribution() click to toggle source
# File lib/meilisearch/index.rb, line 167
def field_distribution
  stats['fieldDistribution']
end
filterable_attributes() click to toggle source

SETTINGS - FILTERABLE ATTRIBUTES

# File lib/meilisearch/index.rb, line 286
def filterable_attributes
  http_get "/indexes/#{@uid}/settings/filterable-attributes"
end
Also aliased as: get_filterable_attributes
filterable_attributes=(filterable_attributes)
get_all_update_status() click to toggle source
# File lib/meilisearch/index.rb, line 128
def get_all_update_status
  http_get "/indexes/#{@uid}/updates"
end
get_displayed_attributes()
get_distinct_attribute()
Alias for: distinct_attribute
get_document(document_id)
Alias for: document
get_documents(options = {})
Alias for: documents
get_filterable_attributes()
get_one_document(document_id)
Alias for: document
get_primary_key()
Alias for: fetch_primary_key
get_ranking_rules()
Alias for: ranking_rules
get_searchable_attributes()
get_settings()
Alias for: settings
get_sortable_attributes()
Alias for: sortable_attributes
get_stop_words()
Alias for: stop_words
get_synonyms()
Alias for: synonyms
get_update_status(update_id) click to toggle source

UPDATES

# File lib/meilisearch/index.rb, line 124
def get_update_status(update_id)
  http_get "/indexes/#{@uid}/updates/#{update_id}"
end
indexing?() click to toggle source
# File lib/meilisearch/index.rb, line 159
def indexing?
  stats['isIndexing']
end
last_update() click to toggle source
# File lib/meilisearch/index.rb, line 163
def last_update
  stats['lastUpdate']
end
number_of_documents() click to toggle source
# File lib/meilisearch/index.rb, line 155
def number_of_documents
  stats['numberOfDocuments']
end
ranking_rules() click to toggle source

SETTINGS - RANKING RULES

# File lib/meilisearch/index.rb, line 189
def ranking_rules
  http_get "/indexes/#{@uid}/settings/ranking-rules"
end
Also aliased as: get_ranking_rules
ranking_rules=(ranking_rules)
replace_documents(documents, primary_key = nil)
Alias for: add_documents
replace_documents!(documents, primary_key = nil)
Alias for: add_documents!
reset_displayed_attributes() click to toggle source
# File lib/meilisearch/index.rb, line 280
def reset_displayed_attributes
  http_delete "/indexes/#{@uid}/settings/displayed-attributes"
end
reset_distinct_attribute() click to toggle source
# File lib/meilisearch/index.rb, line 248
def reset_distinct_attribute
  http_delete "/indexes/#{@uid}/settings/distinct-attribute"
end
reset_filterable_attributes() click to toggle source
# File lib/meilisearch/index.rb, line 296
def reset_filterable_attributes
  http_delete "/indexes/#{@uid}/settings/filterable-attributes"
end
reset_ranking_rules() click to toggle source
# File lib/meilisearch/index.rb, line 199
def reset_ranking_rules
  http_delete "/indexes/#{@uid}/settings/ranking-rules"
end
reset_searchable_attributes() click to toggle source
# File lib/meilisearch/index.rb, line 264
def reset_searchable_attributes
  http_delete "/indexes/#{@uid}/settings/searchable-attributes"
end
reset_settings() click to toggle source
# File lib/meilisearch/index.rb, line 183
def reset_settings
  http_delete "/indexes/#{@uid}/settings"
end
reset_sortable_attributes() click to toggle source
# File lib/meilisearch/index.rb, line 312
def reset_sortable_attributes
  http_delete "/indexes/#{@uid}/settings/sortable-attributes"
end
reset_stop_words() click to toggle source
# File lib/meilisearch/index.rb, line 232
def reset_stop_words
  http_delete "/indexes/#{@uid}/settings/stop-words"
end
reset_synonyms() click to toggle source
# File lib/meilisearch/index.rb, line 215
def reset_synonyms
  http_delete "/indexes/#{@uid}/settings/synonyms"
end
searchable_attributes() click to toggle source

SETTINGS - SEARCHABLE ATTRIBUTES

# File lib/meilisearch/index.rb, line 254
def searchable_attributes
  http_get "/indexes/#{@uid}/settings/searchable-attributes"
end
Also aliased as: get_searchable_attributes
searchable_attributes=(searchable_attributes)
settings() click to toggle source

SETTINGS - GENERAL

# File lib/meilisearch/index.rb, line 173
def settings
  http_get "/indexes/#{@uid}/settings"
end
Also aliased as: get_settings
settings=(settings)
Alias for: update_settings
sortable_attributes() click to toggle source

SETTINGS - SORTABLE ATTRIBUTES

# File lib/meilisearch/index.rb, line 302
def sortable_attributes
  http_get "/indexes/#{@uid}/settings/sortable-attributes"
end
Also aliased as: get_sortable_attributes
sortable_attributes=(sortable_attributes)
stats() click to toggle source

STATS

# File lib/meilisearch/index.rb, line 151
def stats
  http_get "/indexes/#{@uid}/stats"
end
stop_words() click to toggle source

SETTINGS - STOP-WORDS

# File lib/meilisearch/index.rb, line 221
def stop_words
  http_get "/indexes/#{@uid}/settings/stop-words"
end
Also aliased as: get_stop_words
stop_words=(stop_words)
Alias for: update_stop_words
synonyms() click to toggle source

SETTINGS - SYNONYMS

# File lib/meilisearch/index.rb, line 205
def synonyms
  http_get "/indexes/#{@uid}/settings/synonyms"
end
Also aliased as: get_synonyms
synonyms=(synonyms)
Alias for: update_synonyms
update(body) click to toggle source
# File lib/meilisearch/index.rb, line 22
def update(body)
  index_hash = http_put "/indexes/#{@uid}", body
  @primary_key = index_hash['primaryKey']
  self
end
Also aliased as: update_index
update_displayed_attributes(displayed_attributes) click to toggle source
# File lib/meilisearch/index.rb, line 275
def update_displayed_attributes(displayed_attributes)
  http_post "/indexes/#{@uid}/settings/displayed-attributes", displayed_attributes
end
Also aliased as: displayed_attributes=
update_distinct_attribute(distinct_attribute) click to toggle source
# File lib/meilisearch/index.rb, line 243
def update_distinct_attribute(distinct_attribute)
  http_post "/indexes/#{@uid}/settings/distinct-attribute", distinct_attribute
end
Also aliased as: distinct_attribute=
update_documents(documents, primary_key = nil) click to toggle source
# File lib/meilisearch/index.rb, line 67
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
Also aliased as: add_or_update_documents
update_documents!(documents, primary_key = nil) click to toggle source
# File lib/meilisearch/index.rb, line 73
def update_documents!(documents, primary_key = nil)
  update = update_documents(documents, primary_key)
  wait_for_pending_update(update['updateId'])
end
Also aliased as: add_or_update_documents!
update_filterable_attributes(filterable_attributes) click to toggle source
# File lib/meilisearch/index.rb, line 291
def update_filterable_attributes(filterable_attributes)
  http_post "/indexes/#{@uid}/settings/filterable-attributes", filterable_attributes
end
Also aliased as: filterable_attributes=
update_index(body)
Alias for: update
update_ranking_rules(ranking_rules) click to toggle source
# File lib/meilisearch/index.rb, line 194
def update_ranking_rules(ranking_rules)
  http_post "/indexes/#{@uid}/settings/ranking-rules", ranking_rules
end
Also aliased as: ranking_rules=
update_searchable_attributes(searchable_attributes) click to toggle source
# File lib/meilisearch/index.rb, line 259
def update_searchable_attributes(searchable_attributes)
  http_post "/indexes/#{@uid}/settings/searchable-attributes", searchable_attributes
end
Also aliased as: searchable_attributes=
update_settings(settings) click to toggle source
# File lib/meilisearch/index.rb, line 178
def update_settings(settings)
  http_post "/indexes/#{@uid}/settings", settings
end
Also aliased as: settings=
update_sortable_attributes(sortable_attributes) click to toggle source
# File lib/meilisearch/index.rb, line 307
def update_sortable_attributes(sortable_attributes)
  http_post "/indexes/#{@uid}/settings/sortable-attributes", sortable_attributes
end
Also aliased as: sortable_attributes=
update_stop_words(stop_words) click to toggle source
# File lib/meilisearch/index.rb, line 226
def update_stop_words(stop_words)
  body = stop_words.nil? || stop_words.is_a?(Array) ? stop_words : [stop_words]
  http_post "/indexes/#{@uid}/settings/stop-words", body
end
Also aliased as: stop_words=
update_synonyms(synonyms) click to toggle source
# File lib/meilisearch/index.rb, line 210
def update_synonyms(synonyms)
  http_post "/indexes/#{@uid}/settings/synonyms", synonyms
end
Also aliased as: synonyms=
wait_for_pending_update(update_id, timeout_in_ms = 5000, interval_in_ms = 50) click to toggle source
# File lib/meilisearch/index.rb, line 136
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 achieved_upate?(get_update)

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