内容简介:前面学习了 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
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
浪潮之巅(第2版)(套装上下册)
吴军 / 人民邮电出版社 / 2013-7 / 80.00元
一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,这本书也着力讲述很多尚在普及或将要发生的,比如微博和云计算,以及对下一代互联网科技产业浪潮的判断和预测。因为在极度商业化的今天,科技的进步和商机是分不开的。 ......一起来看看 《浪潮之巅(第2版)(套装上下册)》 这本书的介绍吧!