/*
* JBoss, Home of Professional Open Source
* Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @authors tag. All rights reserved.
*/
package org.searchisko.api.service;
import java.util.Date;
import java.util.Map;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.searchisko.persistence.service.EntityService;
/**
* Entity service which has copy of data stored in search index also.
*
* @author Vlastimil Elias (velias at redhat dot com)
*/
public interface SearchableEntityService extends EntityService {
/**
* Prepare {@link BulkRequestBuilder} to be used in {@link #updateSearchIndex(BulkRequestBuilder, String, Map)}.
*
* @return bulk request builder
*/
BulkRequestBuilder prepareBulkRequest();
/**
* Updates search index for entity identified by id.
*
* @param brb to be used for update
* @param id of entity
* @param entity data to store into search index
* @see #prepareBulkRequest()
*/
void updateSearchIndex(BulkRequestBuilder brb, String id, Map<String, Object> entity);
/**
* Delete all records not updated after given timestamp from search index.
*
* @param timestamp to delete records not updated after
*/
void deleteOldFromSearchIndex(Date timestamp);
}