前言:
上一篇我们分享了 Spring Boot 整合 Elasticsearch 使用 ElasticsearchRepository 完成简单的增删改查,我们发现 ElasticsearchRepository 中很多稍微复杂一些的查询就会显示方法过期,对于 Elasticsearch 7.X 版本,我们可以使用 ElasticsearchRestTemplate 来进行相关增删改查。
Elasticsearch 系列文章传送门
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

最低0.47元/天 解锁文章
8314

被折叠的 条评论
为什么被折叠?



