47 lines
1.2 KiB
Ruby
47 lines
1.2 KiB
Ruby
module Search
|
|
class Base
|
|
class << self
|
|
def index(doc_id, serialized_data)
|
|
SearchClient.index(
|
|
id: doc_id,
|
|
index: self::INDEX_ALIAS,
|
|
body: serialized_data,
|
|
)
|
|
end
|
|
|
|
def find_document(doc_id)
|
|
SearchClient.get(id: doc_id, index: self::INDEX_ALIAS)
|
|
end
|
|
|
|
def create_index(index_name: self::INDEX_NAME)
|
|
SearchClient.indices.create(index: index_name, body: settings)
|
|
end
|
|
|
|
def delete_index(index_name: self::INDEX_NAME)
|
|
SearchClient.indices.delete(index: index_name)
|
|
end
|
|
|
|
def refresh_index(index_name: self::INDEX_ALIAS)
|
|
SearchClient.indices.refresh(index: index_name)
|
|
end
|
|
|
|
def add_alias(index_name: self::INDEX_NAME, index_alias: self::INDEX_ALIAS)
|
|
SearchClient.indices.put_alias(index: index_name, name: index_alias)
|
|
end
|
|
|
|
def update_mappings(index_alias: self::INDEX_ALIAS)
|
|
SearchClient.indices.put_mapping(index: index_alias, body: self::MAPPINGS)
|
|
end
|
|
|
|
private
|
|
|
|
def settings
|
|
{ settings: { index: index_settings } }
|
|
end
|
|
|
|
def index_settings
|
|
raise "Search classes must implement their own index settings"
|
|
end
|
|
end
|
|
end
|
|
end
|