Elasticsearch 之 ElasticsearchRestTemplate 普通查询

前言:

上一篇我们分享了 Spring Boot 整合 Elasticsearch 使用 ElasticsearchRepository 完成简单的增删改查,我们发现 ElasticsearchRepository 中很多稍微复杂一些的查询就会显示方法过期,对于 Elasticsearch 7.X 版本,我们可以使用 ElasticsearchRestTemplate 来进行相关增删改查。

Elasticsearch 系列文章传送门

Elasticsearch 基础篇【ES】

Elasticsearch Windows 环境安装

QueryBuilders

QueryBuilders 是 Elasticsearch 中的一个工具类,用于构建各种复杂的查询的条件,在实际业务场景中,经常需要构建复杂的条件查询,如范围查询、布尔查询、模糊查询等场景,QueryBuilders 提供了构建这些复杂的查询能力,替代了手动编写复杂的 JSON 格式的查询 Elasticsearch 语句,在使用 ElasticsearchRestTemplate 完成 Elasticsearch 的各种复杂查询的时候,我们会使用到 QueryBuilders。

普通查询

ElasticsearchRestTemplate 是 Spring Data Elasticsearch 提供的一个操作 Elasticsearch 的模板类,它封装了在 Java 应用程序中执行各种 Elasticsearch 操作的方法,下面我们演示使用 ElasticsearchRestTemplate 来进行 Elasticsearch 的增删改查。

案例演示准备

我使用车作为业务模型进行 Elasticsearch 的 ElasticsearchRestTemplate 演示,车对象代码如下:

@Data
@Document(indexName = "car", shards = 1, replicas = 1)
public class CarDO {
   
   

    private Long id;

    private String color;

    private String model;

    private double price;

}

如上代码我们定义了一个 car 的索引关于车的相关文档都存储在了 car 这个索引中了。

save(保存文档)

ElasticsearchRestTemplate 使用 save 方法来保存单个文档,代码如下:

public void saveCar(CarDO carDO) {
   
   
	elasticsearchRestTemplate.save(carDO);
	List<CarDO> list = new ArrayList<>();
	list.add(carDO);
	elasticsearchRestTemplate.save(list);
}

可以看到 save 方法也是支持批量保存的。

get(查詢文档)

ElasticsearchRestTemplate 使用 get 方法根据文档 id 来查询文档,代码如下:

public CarDO queryCarById(Long id) {
   
   
	return elasticsearchRestTemplate.get(String.valueOf(id), CarDO.class);
}

我们传入了文档 id 和车对象的的 Class 即可根据文档 id 查询文档对象。

update(更新文档)

ElasticsearchRestTemplate 使用 update 方法来更新文档,代码如下:

public void updateCar(CarDO carDO) {
   
   
	UpdateQuery.Builder builder = UpdateQuery.builder(String.valueOf(carDO.getId()));
	Document document = Document.create();
	document.put("color", carDO.getColor());
	document.put("model", carDO.getModel());
	document.put("price", carDO.getPrice());
	builder.withDocument(document);
	elasticsearchRestTemplate.update(builder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值