在 Spring Boot 项目中使用 Elasticsearch 进行商品文档操作
创始人
2024-11-04 02:08:23
0

文章目录

    • 前期准备
    • 配置 Elasticsearch 客户端
    • 添加文档
    • 查询文档
    • 更新文档
    • 删除文档
    • 批量操作
    • 结语

在现代应用中,Elasticsearch 已成为处理海量数据和实现高效搜索的利器。今天,我们将探讨如何在 Spring Boot 项目中使用 Elasticsearch 进行商品文档的增删改查操作。通过这篇文章,你将了解到如何配置 Elasticsearch 客户端以及具体的实现步骤。

前期准备

在开始之前,我们需要确保已经在项目中引入了必要的依赖,并且已经安装并运行了 Elasticsearch 服务。本文假设你已经完成了这些准备工作。

配置 Elasticsearch 客户端

首先,我们需要配置 Elasticsearch 客户端。在每个测试方法执行之前,我们会初始化 RestHighLevelClient,并在测试结束后关闭它,以确保资源的正确释放。以下是 setUptearDown 方法的实现:

@BeforeEach void setUp() {     client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://192.168.xxx.xxx:9200"))); }  @AfterEach void tearDown() throws IOException {     if (client != null) {         client.close();     } } 

添加文档

接下来,我们来看如何将商品文档添加到 Elasticsearch 中。首先,我们需要从数据库中获取商品数据,然后将其转换为 Elasticsearch 文档格式并进行存储。以下是具体实现步骤:

@Test void testIndexDoc() throws IOException {     // 0.准备文档数据     // 0.1.根据id查询数据库数据     Item item = itemService.getById(317578L);     // 0.2.把数据库数据转为文档数据     ItemDoc itemDoc = BeanUtil.copyProperties(item, ItemDoc.class);     itemDoc.setPrice(29900);     // 1.准备Request对象     IndexRequest request = new IndexRequest("items").id(itemDoc.getId());     // 2.准备请求参数     request.source(JSONUtil.toJsonStr(itemDoc), XContentType.JSON);     // 3.发送请求     IndexResponse response = client.index(request, RequestOptions.DEFAULT);     System.out.println("response=" + response); } 

在上述代码中,我们通过 itemService 获取商品数据,并使用 BeanUtil 工具将其转换为 ItemDoc 对象,最后将该对象作为 JSON 字符串存储到 Elasticsearch 中。

查询文档

为了验证文档是否成功存储,我们可以通过文档 ID 来查询文档。以下是查询文档的示例代码:

@Test void testGetDoc() throws IOException {     // 1.准备Request对象     GetRequest request = new GetRequest("items", "317578");     // 2.发送请求     GetResponse response = client.get(request, RequestOptions.DEFAULT);     // 3.解析响应     String json = response.getSourceAsString();     ItemDoc itemDoc = JSONUtil.toBean(json, ItemDoc.class);     System.out.println("doc=" + itemDoc); } 

更新文档

如果需要更新文档中的某些字段,我们可以使用 UpdateRequest 来实现。以下是更新文档的示例代码:

@Test void testUpdateDoc() throws IOException {     // 1.准备Request对象     UpdateRequest request = new UpdateRequest("items", "317578");     // 2.准备请求参数     request.doc("price", 25600);     // 3.发送请求     client.update(request, RequestOptions.DEFAULT); } 

删除文档

最后,如果需要删除文档,可以使用 DeleteRequest 来实现。以下是删除文档的示例代码:

@Test void testDeleteDoc() throws IOException {     // 1.准备Request对象     DeleteRequest request = new DeleteRequest("items", "317578");     // 2.发送请求     client.delete(request, RequestOptions.DEFAULT); } 

批量操作

在实际应用中,我们可能需要批量处理文档。以下是批量添加文档的示例代码:

@Test void testBulkDoc() throws IOException {     int pageNo = 1, pageSize = 500;     while (true) {         // 1.准备文档数据         Page page = itemService.lambdaQuery().eq(Item::getStatus, 1).page(Page.of(pageNo, pageSize));         List records = page.getRecords();         if (records == null || records.isEmpty()) {             return;         }         // 2.准备Request对象         BulkRequest request = new BulkRequest();         // 3.准备请求参数         for (Item item : records) {             request.add(new IndexRequest("items").id(item.getId().toString()).source(JSONUtil.toJsonStr(                     BeanUtil.copyProperties(item, ItemDoc.class)), XContentType.JSON));         }         // 4.发送请求         client.bulk(request, RequestOptions.DEFAULT);         // 5.翻页         pageNo++;     } } 

在这段代码中,我们使用分页查询数据库中的商品数据,并将其批量添加到 Elasticsearch 中。

结语

通过这篇文章,我们详细介绍了如何在 Spring Boot 项目中使用 Elasticsearch 进行商品文档的增删改查操作。

相关内容

热门资讯

金花游戏房卡怎么获得最简单方法... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
秒懂教程“牛牛链接房卡那里有/... 先锋大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
微信金花房卡链接如何购买/购买... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
微信金花群怎么买房卡/购买斗牛... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
房卡必备教程“链接金花房卡怎么... 新星游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
正版金花房卡哪里有卖/金花链接... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
一分钟了解“炸金花房卡专卖店联... 新西游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
微信链接牛牛群房卡怎么买/微信... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
一分钟推荐“金花大厅房卡链接在... 毛豆大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
终于找到“购买斗牛金花房卡联系... 卡米大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
一分钟推荐“金花房卡在哪里能弄... 新超圣牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
微信群链接牛牛买房卡/微信牛牛... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
牛牛金花房卡链接在哪买/金花客... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
金花大厅房卡如何购买的/微信金... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
微信里面炸金花房卡充值方式/在... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
终于找到“微信链接斗牛房卡开科... 微信网页牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房...
终于找到“金花房卡微信充值/毛... 毛豆大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
牛牛链接房卡在哪里弄/炸金花房... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
一分钟了解“金花斗牛牛房卡怎么... 悠悠互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
正版授权“微信怎么创建金花房间... 毛豆大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...