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 <SO> BaseSearchObject 子类型
|
*/
|
<SO extends BaseSearchObject> void insert(SO so);
|
|
/**
|
* 插入一组索引记录
|
*
|
* @param soList 索引对象列表
|
* @param <SO> BaseSearchObject 子类型
|
*/
|
<SO extends BaseSearchObject> void insert(List<SO> soList);
|
|
/**
|
* 更新索引记录
|
*
|
* @param so 索引对象
|
* @param <SO> BaseSearchObject 子类型
|
*/
|
<SO extends BaseSearchObject> void update(SO so);
|
|
/**
|
* 更新一组索引记录
|
*
|
* @param soList 索引对象列表
|
* @param <SO> BaseSearchObject 子类型
|
*/
|
<SO extends BaseSearchObject> void update(List<SO> soList);
|
|
/**
|
* 删除索引记录
|
*
|
* @param so 索引对象
|
* @param <SO> BaseSearchObject 子类型
|
*/
|
<SO extends BaseSearchObject> void delete(SO so);
|
|
/**
|
* 删除一组索引记录
|
*
|
* @param soList 索引对象列表
|
* @param <SO> BaseSearchObject 子类型
|
*/
|
<SO extends BaseSearchObject> void delete(List<SO> soList);
|
|
/**
|
* 删除全部clazz指定的全部类型
|
*
|
* @param clazz 指定的类型
|
* @param <T> BaseSearchObject 子类型
|
*/
|
<T extends BaseSearchObject> void deleteAll(Class<T> clazz);
|
|
/**
|
* 获取单个索引数据
|
*
|
* @param clazz 索引对象类型
|
* @param id 唯一编号
|
* @param <T> BaseSearchObject 子类型
|
* @return id对应的索引数据
|
*/
|
<T extends BaseSearchObject> T get(Class<T> clazz, String id);
|
|
/**
|
* 获取 clazz 类型对应的全部索引,处于性能考虑最多返回前10000条
|
*
|
* @param clazz 索引对象类型
|
* @param <T> BaseSearchObject 子类型
|
* @return 搜索到的索引列表
|
*/
|
@Deprecated
|
<T extends BaseSearchObject> List<T> select(Class<T> clazz);
|
|
// /**
|
// * 分页获取 clazz 类型对应的索引
|
// *
|
// * @param splitPageInfo 分页对象
|
// * @param clazz 索引对象类型
|
// * @param <T> BaseSearchObject 子类型
|
// * @return 搜索到的索引列表
|
// */
|
// @Deprecated
|
// <T extends BaseSearchObject> List<T> select(SplitPageInfo splitPageInfo, Class<T> clazz);
|
|
/**
|
* 根据条件及参数查询索引
|
*
|
* @param <T> BaseSearchObject 子类型
|
* @param queryBuilder 查询json,参数占位符使用?aa/?bb/?xxx...
|
* @param searchParameter 查询配置,高亮、返回字段设置等
|
* @param clazz 索引对象类型
|
* @return 搜索到的索引列表
|
*/
|
<T extends BaseSearchObject> List<T> select(QueryBuilder queryBuilder, SearchParameter searchParameter, Class<T> clazz);
|
|
// /**
|
// * 根据条件及参数分页查询查询索引
|
// *
|
// * @param <T> BaseSearchObject 子类型
|
// * @param queryBuilder 查询
|
// * @param searchParameter 查询配置,高亮、返回字段设置等
|
// * @param splitPageInfo 分页对象
|
// * @param clazz 索引对象类型
|
// * @return 搜索到的索引列表
|
// */
|
// <T extends BaseSearchObject> List<T> select(QueryBuilder queryBuilder, SearchParameter searchParameter, SplitPageInfo splitPageInfo, Class<T> clazz);
|
|
/**
|
* 删除索引
|
*
|
* @param clazz 索引对象类型
|
* @param <T> BaseSearchObject 子类型
|
* @return 是否成功
|
*/
|
<T extends BaseSearchObject> boolean deleteIndex(Class<T> clazz);
|
|
/**
|
* 创建索引
|
*
|
* @param clazz 索引对象类型
|
* @param <T> BaseSearchObject 子类型
|
* @return 是否成功
|
*/
|
<T extends BaseSearchObject> boolean createIndex(Class<T> clazz);
|
|
/**
|
* 创建索引结构
|
*
|
* @param clazz 索引对象类型
|
* @param <T> BaseSearchObject 子类型
|
* @return 是否成功
|
*/
|
<T extends BaseSearchObject> boolean putMapping(Class<T> clazz);
|
|
/**
|
* 立即实现内存->文件系统缓存
|
*
|
* @param clazz 索引对象类型
|
* @param <T> BaseSearchObject 子类型
|
*/
|
<T extends BaseSearchObject> void refresh(Class<T> clazz);
|
|
/**
|
* 统计查询
|
* @param abstractRangeBuilder 聚合条件
|
* @param queryBuilder 查询条件
|
* @param clazz 索引对象类型
|
* @param <T>BaseSearchObject 子类型
|
* @return 统计查询结果
|
*/
|
<T extends BaseSearchObject> Map aggs(AggregationBuilder abstractRangeBuilder, QueryBuilder queryBuilder, Class<T> clazz);
|
}
|