最近项目中需要使用到 Elasticsearch(下面简称ES) ,主要是为了将日志记录到Es 中,为了配合后期使用。项目技术方案主要是使用 springboot + Elasticsearch 方式,关于 上两种技术方案的基础知识请移步百度.下来我们准备开始实战:

1.先安装一个 “elasticsearch-head ” 插件,这个插件是给谷歌浏览器使用的,可以对Elasticsearch 进行最基本的增删改查.

2. 由于 elasticsearch 的特殊复杂性,底层是Lucene 的库,然而我们想使用java,而后又想使用springboot,这个时候我们就难过了,为啥呢? 因为没得抄,还好经过我努力百度,找到一位大佬的杰作,请移步:https://gitee.com/wb9191/ESClientRHL 这里学习一下,这位老哥的东西写的太好的,此处需要给大佬点赞,打call

接下来我准备代码实战呀:

1.我要调用刚才大佬的东西。首先需要在我的yml 或者 properties 文件中加上我们的一些es 配置信息。信息如下:

elasticsearch.host =  ESip:ES端口号

elasticsearch.username =用户名

elasticsearch.password =密码

2.在启动类需要加上 

@EnableESTools(entityPath = "esDto对应类,如:"com.sb.*.dto.esdto")

3.创建es 对应的数据库dto,贴个样例代码如下:

@Data
@ESMetaData(indexName = ElasticsearchConstant.ES_INDEX, indexType = "ES_INDEX")
public class EsDto implements Serializable {
private static final long serialVersionUID = 8441013435458879465L;


@ESID
private String id;

@ESMapping(datatype = DataType.keyword_type)
private String appCode;

@ESMapping(datatype = DataType.keyword_type)
private String appName;

}

 

上面首先你得加 @ESMetaData 注解里面需要写上索引的名称和索引的类型

再就是索引的主键需要加上 @ESID注解,没和属性上面需要加上对应的es数据类型,这里需要加上 @ESMapping(datatype = 对应数据类型)

这样子我们的代码的dto 就定义完了,下来我写个关于 关于存储的逻辑代码:

@Slf4j
@Service("service")
@SuppressWarnings("all")
public class ServiceImpl implements Service {

@Autowired

private ElasticsearchTemplate<EsDto , String> apiLogEsTemplate;

@Async()
@Override
public void save(EsDto dto) {
try {
dto.setId(UUIDUtils.getUUID());
apiLogEsTemplate.save(dto);
} catch (Exception e) {
log.error("es写入失败,失败原因为{}", e.getMessage());
}
}

}

 

其中的ElasticsearchTemplate 就是我们操作需要使用的 template,它的泛型类的第一个参数类是我们对应es的dto类型,第二个是对应主键的类型,使用它的save 方法可以用来存储对应数据到ES中去

查询逻辑:

此处查询我们推荐使用:

BoolQueryBuilder,关于 BoolQueryBuilder 的示例大家看看人大佬的 各种查询,聚合查询都很全面

 

最后贴点我最近搜罗的es资料:

 

 

 

 

 

 写到这里先,后续学习新的东西我还会继续更新