最近项目中需要使用到 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资料:



写到这里先,后续学习新的东西我还会继续更新
浙公网安备 33010602011771号