class EsClient::ActiveRecord::Adapter

Attributes

document_type[R]
index[R]
index_name[R]
mapping[R]
settings[R]

Public Class Methods

new(model) click to toggle source
# File lib/es_client/active_record/adapter.rb, line 6
def initialize(model)
  @model = model
end

Public Instance Methods

destroy_document(id) click to toggle source
# File lib/es_client/active_record/adapter.rb, line 58
def destroy_document(id)
  index.destroy_document(document_type, id)
end
find(id) click to toggle source
# File lib/es_client/active_record/adapter.rb, line 62
def find(id)
  if id.is_a?(Array)
    query = {query: {ids: {values: id, type: document_type}}, size: id.length}
    index.search(query, type: document_type)
  else
    index.find(document_type, id)
  end
end
import(records) click to toggle source
# File lib/es_client/active_record/adapter.rb, line 71
def import(records)
  index.bulk :index, document_type, records.map(&:as_indexed_json)
end
save_document(record) click to toggle source
# File lib/es_client/active_record/adapter.rb, line 48
def save_document(record)
  index.save_document(document_type, record.id, record.as_indexed_json)
end
update_document(record, additional_doc=nil) click to toggle source
# File lib/es_client/active_record/adapter.rb, line 52
def update_document(record, additional_doc=nil)
  doc = record.changes.map { |k, v| [k, v.last] }.to_h
  doc.deep_merge!(additional_doc) if additional_doc
  index.update_document(document_type, record.id, doc)
end