内容简介:前面学习了 Elasticsearch 的简单基本操作,例如安装,基本的操作命令等,今天就来看看 es 和 Spring boot 的简单整合,实现增删改查的功能。众所周知,Spring boot 支持多种 NoSql 数据库,例如 redis、mongodb,elasticsearch 也是其中的一种。并且实现了 Spring boot 一贯的自动化配置,使用起来也是十分方便的。
1. 概述
前面学习了 Elasticsearch 的简单基本操作,例如安装,基本的操作命令等,今天就来看看 es 和 Spring boot 的简单整合,实现增删改查的功能。众所周知,Spring boot 支持多种 NoSql 数据库,例如 redis 、mongodb,elasticsearch 也是其中的一种。并且实现了 Spring boot 一贯的自动化配置,使用起来也是十分方便的。
2. 新建项目
新建一个 spring boot 项目,在 NoSql 这一栏选中 Elasticsearch 。
然后在配置文件中加上 es 的配置:
spring: data: elasticsearch: cluster-nodes: 192.168.66.135:9300 repositories: enabled: true cluster-name: elasticsearch
注意这里使用的是集群的 9300 端口,而不是 es 默认的 9200 端口。cluster-name 默认就是 elasticsearch,不写也可以的。
3. 简单操作
项目建好之后,可以来试试简单的操作。只要你使用过 Spring Data Jpa,那么理解起来就非常的容易了,因为用法都是类似的。
1.首先需要新建一个实体类,表示这种实体类的数据,做为 es 的文档存放。
@Data @Builder @NoArgsConstructor @AllArgsConstructor @Document(indexName = "product", type = "computer") public class Product { private String id; private String name; private double price; private String brand; private String color; }
@Document 注解上面可以指定 index 以及 type 的名称。
2.然后和使用 Jpa 的程序一样,新建一个 dao 层的接口,继承 ElasticsearchRepository 接口,然后可以在这个接口里面写一些自定义的方法,这里我们实现的是简单的增删改查,自带的会支持,所以就不用重写方法了。
/** * @author RoseDuan */ public interface ProductRepository extends ElasticsearchRepository<Product, String> { }
按照逻辑还需要写 service 层,这里为了简单,我们就直接在 dao 层进行测试了。
其中修改和增加的操作类似,只需要把实体类的数据变动一下再存储就行了,只是 id 不变,否则就会新建一条记录。
需要重点关注一下查询的操作,因为 es 支持高效的搜索,所以可以直接利用这个接口实现搜索操作,并且可以分页,排序等。
全部的测试代码如下:
@SpringBootTest @RunWith(SpringRunner.class) public class ProductRepositoryTest { @Autowired private ProductRepository productRepository; /** * 增加和修改操作 */ @Test public void testAdd(){ Product product = Product.builder() .id("JX1125630000").name("我的笔记本电脑") .price(5996).brand("Mac").color("银色") .build(); productRepository.save(product); } /** * 查询操作 */ @Test public void testDelete(){ productRepository.deleteById("JX1125630000"); } /** * 搜索操作 */ @Test public void testSearch() { SearchQuery searchQuery = new NativeSearchQueryBuilder() .withIndices("product").withTypes("computer") .withQuery(QueryBuilders.matchQuery("brand", "惠")) .withSort(SortBuilders.fieldSort("price").order(SortOrder.DESC)) .build(); Page<Product> result = productRepository.search(searchQuery); List<Product> content = result.getContent(); for (Product product : content){ System.out.println(product.toString()); } } }
除了使用 Jpa 的接口,还可以 ElasticsearchTemplate 来实现对 es 的操作,只需要注入即可使用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot整合MybatisPlus的简单教程(简单整合)
- springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)
- springboot整合springsecurity从Hello World到源码解析(五):springsecurity+jwt整合restful服务
- SSM整合搭建(二)
- SSM整合
- Storm 整合 Hbase
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Code Reading
Diomidis Spinellis / Addison-Wesley Professional / 2003-06-06 / USD 64.99
This book is a unique and essential reference that focuses upon the reading and comprehension of existing software code. While code reading is an important task faced by the vast majority of students,......一起来看看 《Code Reading》 这本书的介绍吧!