0. Easy-Es简介
Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称MP),那么您基本可以零学习成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比MP更简单,同时也融入了更多Es独有的功能,助力您快速实现各种场景的开发.
官网地址:Easy-Es
1. 创建Springboot项目,导入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>cn.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>2.0.0-beta1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
需要排除Springboot自带的elasticsearch,因为官方建议使用7.14.0版本
2. 配置文件:
easy-es:
enable: true #默认为true,若为false则认为不启用本框架
address : 192.168.149.128:9200
3. 添加@EsMapperScan注解,扫描Mapper文件
@EsMapperScan("com.itheima.demos.mapper.es")
@SpringBootApplication
public class EasyEsApplication {
public static void main(String[] args) {
SpringApplication.run(EasyEsApplication.class, args);
}
}
4. 实体类和Mapper:
@Data
@IndexName
public class Document {
/**
* es中的唯一id
*/
private String id;
/**
* 文档标题
*/
private String title;
/**
* 文档内容
*/
private String content;
}
package com.itheima.demos.mapper.es;
import cn.easyes.core.core.BaseEsMapper;
import com.itheima.demos.pojo.es.Document;
public interface DocumentMapper extends BaseEsMapper<Document> {
}
5. 运行
@SpringBootTest
class EasyEsApplicationTests {
@Resource
private DocumentMapper documentMapper;
@Test
void insertDocument() {
Document document1 = new Document();
document1.setTitle("诸葛丞相病故111");
document1.setContent("诸葛丞相病故xxxxxx111");
documentMapper.insert(document1);
Document document2 = new Document();
document2.setTitle("诸葛丞相病故222");
document2.setContent("诸葛丞相病故xxxxxx222");
documentMapper.insert(document2);
}
@Test
void selectDocument() {
LambdaEsQueryWrapper<Document> wrapper = EsWrappers.lambdaQuery(Document.class);
List<Document> documents = documentMapper.selectList(wrapper);
for (Document document : documents) {
System.out.println(document);
}
}
}
运行结果:
2024-04-04 18:19:22.632 INFO 30336 --- [ main] easy-es : ===> Execute By Easy-Es:
index-name: document_s0
DSL:{"size":10000,"query":{"bool":{"adjust_pure_negative":true,"boost":1.0}},"track_total_hits":2147483647}
Document(id=lUJKqI4Bid00Opb_wzJ5, title=诸葛丞相病故111, content=诸葛丞相病故xxxxxx111)
Document(id=lkJKqI4Bid00Opb_wzLA, title=诸葛丞相病故222, content=诸葛丞相病故xxxxxx222)