import java.util.List;
import java.util.Map;


public interface IIndexService<T> {

    /**
     * 插入数据
     * @param t
     * @return
     */
    public boolean insertOne(T t);
    
    /**
     * 批量插入数据
     * @param lists
     * @return
     */
    public boolean insertList(List<T> lists);
    
    /**
     * 删除单条数据
     * @param t
     * @return
     */
    public boolean deleteOne(T t);
    
    /**
     * 批量删除数据
     * @param lists
     * @return
     */
    public boolean deleteList(List<T> lists);
    
    
    /**
     * 更新单条索引数据
     * @param t
     * @return
     */
    public boolean updateOne(T t);
    
    /**
     * 批量更新数据
     * @param lists
     * @return
     */
    public boolean udateList(List<T> lists);
    
    
    /**
     * 获取索引数据,默认返回所有
     * @param jsonQuery
     * @param indexName
     * @param start
     * @param size
     * @return
     */
    public List search(String jsonQuery, String indexName, int start, int size);
    
    /**
     * 获取索引数据,指定字段返回
     * @param jsonQuery
     * @param indexName
     * @param start
     * @param size
     * @param fields
     * @return
     */
    public List searchField(String jsonQuery, String indexName, int start, int size,String ...fields);
    
    /**
     * 判断ID是否存在
     * @param id
     * @param indexName
     * @return
     */
    public boolean checkDocExisted(String indexName,String type,String id);
    
    /**
     * 更新某些字段的值
     * @param id
     * @param indexName
     * @param type
     * @param script
     * @param maps
     * @return
     */
    public boolean updateFields(String id, String indexName,String type,String script,Map<String, Object> maps);
    
    
}