com.sinszm.es.EsUtil Maven / Gradle / Ivy
package com.sinszm.es;
import cn.hutool.extra.spring.SpringUtil;
import com.sinszm.common.exception.ApiException;
import com.sinszm.es.dao.EsDao;
import com.sinszm.es.dao.Page;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.index.query.QueryBuilder;
import java.util.List;
/**
* Es调用工具
*
* @author sinszm
*/
public final class EsUtil {
/**
* 判断实例是否存在
*
* @return 响应实例对象
*/
private static EsDao dao(){
final String name = "esDao";
if (SpringUtil.getApplicationContext().containsBeanDefinition(name)) {
return SpringUtil.getBean(EsDao.class);
}
throw new ApiException("未启用Es服务");
}
/**
* 客户端
*
* @return 操作客户端
*/
public static RestHighLevelClient es() {
return dao().es();
}
/**
* 判断索引是否存在
* @param index 索引名称
* @return 是否存在,true存在,false不存在
*/
public static boolean existsIndex(String index) {
return dao().existsIndex(index);
}
/**
* 判断索引是否存在
* @param tClass 索引类
* @param 泛型
* @return 是否存在,true存在,false不存在
*/
public static boolean existsIndex(Class tClass) {
return dao().existsIndex(tClass);
}
/**
* 创建索引
* @param tClass 索引类
* @param 泛型
* @return 创建结果
*/
public static CreateIndexResponse createIndex(Class tClass) {
return dao().createIndex(tClass);
}
/**
* 删除索引
* @param tClass 索引类
* @param 泛型
* @return 删除结果
*/
public static AcknowledgedResponse deleteIndex(Class tClass) {
return dao().deleteIndex(tClass);
}
/**
* 插入索引数据
* @param data 数据
* @param create 是否创建索引结构
* @param 泛型
* @return 插入结果
*/
public static IndexResponse insert(T data, boolean create) {
return dao().insert(data, create);
}
/**
* 插入索引数据
*
* 不执行索引结构的初始化创建
*
* @param data 数据
* @param 泛型
* @return 插入结果
*/
public static IndexResponse insert(T data) {
return dao().insert(data);
}
/**
* 插入索引数据
*
* 如果索引结构不存在则创建,如果索引存在则先删除结构再创建
*
* @param data 数据
* @param 泛型
* @return 插入结果
*/
public static IndexResponse insertEs(T data) {
return dao().insertEs(data);
}
/**
* 更新索引数据
* @param data 数据
* @param 泛型
* @return 更新结果
*/
public static UpdateResponse update(T data){
return dao().update(data);
}
/**
* 删除索引数据
* @param data 数据
* @param 泛型
* @return 删除结果
*/
public static DeleteResponse delete(T data) {
return dao().delete(data);
}
/**
* 查询单条索引数据详情
* @param id 索引ID
* @param tClass 实体
* @param 泛型
* @return 数据
*/
public static T findOne(String id, Class tClass) {
return dao().findOne(id, tClass);
}
/**
* 查询全部
* @param tClass 实体类
* @param 泛型
* @return 索引列表
*/
public static List findAll(Class tClass) {
return dao().findAll(tClass);
}
/**
* 查询全部
* @param tClass 实体类
* @param size 游标每页返回数
* @param 泛型
* @return 索引列表
*/
public static Page findAll(Class tClass, int size) {
return dao().findAll(tClass, size);
}
/**
* 查询数据
* @param queryBuilder 查询条件
* @param tClass 实体类
* @param 泛型
* @return 按条件查询的数据列表
*/
public static List query(QueryBuilder queryBuilder, Class tClass) {
return dao().query(queryBuilder, tClass);
}
/**
* 按Scroll查询数据
* @param queryBuilder 查询条件
* @param size 每次scroll返回数据条数
* @param tClass 实体类
* @param 泛型
* @return 分页数据
*/
public static Page query(QueryBuilder queryBuilder, int size, Class tClass) {
return dao().query(queryBuilder, size, tClass);
}
}