1、pom.xml文件中导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.5.0</version>
</dependency>
2、在项目的application.yml文件中添加配置信息
spring:
elasticsearch:
rest:
uris: 192.168.136.133:9200
username: admin
password: admin
3、准备对应的实体类以及对应的mapper接口
1、使用到的jar包
<!-- lombok jar包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- JSON解析 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
2、准备测试实体类
package com.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "user") //不可少,表示es中的文档名称
public class User {
@Id //es文档主键 不可少
private Long userId;
private String username;
private String password;
}
3、对应的mapper接口 两个泛型的值分别是 实体类和对应实体类的主键类型
package com.example.mapper;
import com.example.pojo.User;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface UserRepository extends ElasticsearchRepository<User,Long> {
}
4、书写测试类
1、向es中添加数据
@Autowired //注入定义的接口
private UserRepository userRepository;
@Test //一次添加一个
public void Test02() {
User user = new User(1, "张三", "11223");
userRepository.save(user);
}
@Test //一次添加多个
public void test002(){
List<User> userList = new ArrayList<>();
userRepository.saveAll(userList);
}
2、在es中删除数据
@Test
public void Test04(){
//一次删除一个
User user = new User(1L, "张三", "11223");
userRepository.delete(user);
//一次删除一个 根据id删除
userRepository.deleteById(1L);
//一次删除多个
List<User> userList = new ArrayList<>();
userRepository.deleteAll(userList);
//清空整个文档的数据并删除这个文档
userRepository.deleteAll();
}
3、修改es中存在的数据 使用的仍然是save方法,当id一样时,会覆盖原来的数据,因此可用于修改数据。
@Test
public void Test05(){
User user = new User(1L, "张三1111", "11223");
userRepository.save(user);
}
4、查询es中的数据
@Test
public void getAll() {
//创建布尔查询的对象
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//通过定义的对象,添加查询的条件
boolQueryBuilder.must(QueryBuilders.termQuery("userId",1));
//boolQueryBuilder.must(QueryBuilders.termQuery("username","张三"));
//boolQueryBuilder.must(QueryBuilders.termQuery("username","张三1"));
//分页设置
PageRequest.of(1,10);
//编译查询的对象
NativeSearchQuery build = new NativeSearchQueryBuilder()
.withQuery(boolQueryBuilder).build();
//使用elasticsearchRestTemplate进行查询
SearchHits<User> search = elasticsearchRestTemplate.search(build, User.class);
System.err.println(search.getSearchHits().size());
//将得到的数据进行转换,
List<User> userList = search.getSearchHits().stream().map(org.springframework.data.elasticsearch.core.SearchHit::getContent).collect(Collectors.toList());
}
以上是SpringBoot集成elasticsearch,进行增删改查的基本用法。
在本es的数据查询中,默认es只查询文档中的前10000条数据,所以使用此方法也是只能查出10000条数据。
如果需要es查询所有数据,可查看
谢谢关注!!