module Elastic::SiteSearch::Client::Document

Documents have fields that can be searched or filtered.

For more information on indexing documents, see the REST API indexing documentation.

Public Instance Methods

async_create_or_update_documents(engine_id, document_type_id, documents=[]) click to toggle source
# File lib/elastic/site-search/client.rb, line 335
def async_create_or_update_documents(engine_id, document_type_id, documents=[])
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents/async_bulk_create_or_update.json", :documents => documents)
end
create_document(engine_id, document_type_id, document={}) click to toggle source
# File lib/elastic/site-search/client.rb, line 299
def create_document(engine_id, document_type_id, document={})
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents.json", :document => document)
end
create_documents(engine_id, document_type_id, documents=[]) click to toggle source
# File lib/elastic/site-search/client.rb, line 303
def create_documents(engine_id, document_type_id, documents=[])
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_create.json", :documents => documents)
end
create_or_update_document(engine_id, document_type_id, document={}) click to toggle source
# File lib/elastic/site-search/client.rb, line 315
def create_or_update_document(engine_id, document_type_id, document={})
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents/create_or_update.json", :document => document)
end
create_or_update_documents(engine_id, document_type_id, documents=[]) click to toggle source
# File lib/elastic/site-search/client.rb, line 319
def create_or_update_documents(engine_id, document_type_id, documents=[])
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_create_or_update.json", :documents => documents)
end
create_or_update_documents_verbose(engine_id, document_type_id, documents=[]) click to toggle source
# File lib/elastic/site-search/client.rb, line 323
def create_or_update_documents_verbose(engine_id, document_type_id, documents=[])
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_create_or_update_verbose.json", :documents => documents)
end
destroy_document(engine_id, document_type_id, document_id) click to toggle source
# File lib/elastic/site-search/client.rb, line 307
def destroy_document(engine_id, document_type_id, document_id)
  delete("engines/#{engine_id}/document_types/#{document_type_id}/documents/#{document_id}.json")
end
destroy_documents(engine_id, document_type_id, document_ids=[]) click to toggle source
# File lib/elastic/site-search/client.rb, line 311
def destroy_documents(engine_id, document_type_id, document_ids=[])
  post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_destroy.json", :documents => document_ids)
end
document(engine_id, document_type_id, document_id) click to toggle source
# File lib/elastic/site-search/client.rb, line 295
def document(engine_id, document_type_id, document_id)
  get("engines/#{engine_id}/document_types/#{document_type_id}/documents/#{document_id}.json")
end
document_receipts(receipt_ids) click to toggle source

Retrieve Document Receipts from the API by ID

@param [Array<String>] receipt_ids an Array of Document Receipt IDs

@return [Array<Hash>] an Array of Document Receipt hashes

# File lib/elastic/site-search/client.rb, line 344
def document_receipts(receipt_ids)
  post("document_receipts.json", :ids => receipt_ids)
end
documents(engine_id, document_type_id, page=nil, per_page=nil) click to toggle source
# File lib/elastic/site-search/client.rb, line 288
def documents(engine_id, document_type_id, page=nil, per_page=nil)
  options = {}
  options[:page] = page if page
  options[:per_page] = per_page if per_page
  get("engines/#{engine_id}/document_types/#{document_type_id}/documents.json", options)
end
index_documents(engine_id, document_type_id, documents = [], options = {}) click to toggle source

Index a batch of documents using the asynchronous API. This is a good choice if you have a large number of documents.

@param [String] engine_id the Engine slug or ID @param [String] document_type_id the Document Type slug or ID @param [Array] documents an Array of Document Hashes @param [Hash] options additional options @option options [Boolean] :async (false) When true, output is document receipts created. When false, poll until all receipts are no longer pending or timeout is reached. @option options [Numeric] :timeout (10) Number of seconds to wait before raising an exception

@return [Array<Hash>] an Array of newly-created Document Receipt hashes if used in :async => true mode @return [Array<Hash>] an Array of processed Document Receipt hashes if used in :async => false mode

@raise [Timeout::Error] when used in :async => false mode and the timeout expires

# File lib/elastic/site-search/client.rb, line 362
def index_documents(engine_id, document_type_id, documents = [], options = {})
  documents = wrap(documents)

  res = async_create_or_update_documents(engine_id, document_type_id, documents)

  if options[:async]
    res
  else
    receipt_ids = res["document_receipts"].map { |a| a["id"] }

    poll(options) do
      receipts = document_receipts(receipt_ids)
      flag = receipts.all? { |a| a["status"] != "pending" }
      flag ? receipts : false
    end
  end
end
update_document(engine_id, document_type_id, document_id, fields) click to toggle source
# File lib/elastic/site-search/client.rb, line 327
def update_document(engine_id, document_type_id, document_id, fields)
  put("engines/#{engine_id}/document_types/#{document_type_id}/documents/#{document_id}/update_fields.json", { :fields => fields })
end
update_documents(engine_id, document_type_id, documents={}) click to toggle source
# File lib/elastic/site-search/client.rb, line 331
def update_documents(engine_id, document_type_id, documents={})
  put("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_update.json", { :documents => documents })
end