package com.walker.support.es.dao; import com.walker.support.es.so.BaseSearchObject; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.search.aggregations.AggregationBuilder; import java.util.List; import java.util.Map; /** * 索引访问对象 * * @author 李志慧 * @date 2017年3月22日 */ public interface SearchDao { /** * 插入索引记录 * * @param so 索引对象 * @param BaseSearchObject 子类型 */ void insert(SO so); /** * 插入一组索引记录 * * @param soList 索引对象列表 * @param BaseSearchObject 子类型 */ void insert(List soList); /** * 更新索引记录 * * @param so 索引对象 * @param BaseSearchObject 子类型 */ void update(SO so); /** * 更新一组索引记录 * * @param soList 索引对象列表 * @param BaseSearchObject 子类型 */ void update(List soList); /** * 删除索引记录 * * @param so 索引对象 * @param BaseSearchObject 子类型 */ void delete(SO so); /** * 删除一组索引记录 * * @param soList 索引对象列表 * @param BaseSearchObject 子类型 */ void delete(List soList); /** * 删除全部clazz指定的全部类型 * * @param clazz 指定的类型 * @param BaseSearchObject 子类型 */ void deleteAll(Class clazz); /** * 获取单个索引数据 * * @param clazz 索引对象类型 * @param id 唯一编号 * @param BaseSearchObject 子类型 * @return id对应的索引数据 */ T get(Class clazz, String id); /** * 获取 clazz 类型对应的全部索引,处于性能考虑最多返回前10000条 * * @param clazz 索引对象类型 * @param BaseSearchObject 子类型 * @return 搜索到的索引列表 */ @Deprecated List select(Class clazz); // /** // * 分页获取 clazz 类型对应的索引 // * // * @param splitPageInfo 分页对象 // * @param clazz 索引对象类型 // * @param BaseSearchObject 子类型 // * @return 搜索到的索引列表 // */ // @Deprecated // List select(SplitPageInfo splitPageInfo, Class clazz); /** * 根据条件及参数查询索引 * * @param BaseSearchObject 子类型 * @param queryBuilder 查询json,参数占位符使用?aa/?bb/?xxx... * @param searchParameter 查询配置,高亮、返回字段设置等 * @param clazz 索引对象类型 * @return 搜索到的索引列表 */ List select(QueryBuilder queryBuilder, SearchParameter searchParameter, Class clazz); // /** // * 根据条件及参数分页查询查询索引 // * // * @param BaseSearchObject 子类型 // * @param queryBuilder 查询 // * @param searchParameter 查询配置,高亮、返回字段设置等 // * @param splitPageInfo 分页对象 // * @param clazz 索引对象类型 // * @return 搜索到的索引列表 // */ // List select(QueryBuilder queryBuilder, SearchParameter searchParameter, SplitPageInfo splitPageInfo, Class clazz); /** * 删除索引 * * @param clazz 索引对象类型 * @param BaseSearchObject 子类型 * @return 是否成功 */ boolean deleteIndex(Class clazz); /** * 创建索引 * * @param clazz 索引对象类型 * @param BaseSearchObject 子类型 * @return 是否成功 */ boolean createIndex(Class clazz); /** * 创建索引结构 * * @param clazz 索引对象类型 * @param BaseSearchObject 子类型 * @return 是否成功 */ boolean putMapping(Class clazz); /** * 立即实现内存->文件系统缓存 * * @param clazz 索引对象类型 * @param BaseSearchObject 子类型 */ void refresh(Class clazz); /** * 统计查询 * @param abstractRangeBuilder 聚合条件 * @param queryBuilder 查询条件 * @param clazz 索引对象类型 * @param BaseSearchObject 子类型 * @return 统计查询结果 */ Map aggs(AggregationBuilder abstractRangeBuilder, QueryBuilder queryBuilder, Class clazz); }