Spring Boot 集成 Elasticsearch
资源文件列表(大概)
EsDemo/.idea/.gitignore
190B
EsDemo/.idea/compiler.xml
603B
EsDemo/.idea/dataSources/
-
EsDemo/.idea/dataSources/df6dd1c2-3c59-4442-909a-f2e252fecb94.xml
597B
EsDemo/.idea/dataSources/e426bc54-bad4-4e35-a82d-ea2935945ed0/
-
EsDemo/.idea/dataSources/e426bc54-bad4-4e35-a82d-ea2935945ed0/storage_v2/
-
EsDemo/.idea/dataSources/e426bc54-bad4-4e35-a82d-ea2935945ed0/storage_v2/_src_/
-
EsDemo/.idea/dataSources/e426bc54-bad4-4e35-a82d-ea2935945ed0/storage_v2/_src_/schema/
-
EsDemo/.idea/dataSources/e426bc54-bad4-4e35-a82d-ea2935945ed0/storage_v2/_src_/schema/esdemo.kQPdsg.meta
61B
EsDemo/.idea/dataSources/e426bc54-bad4-4e35-a82d-ea2935945ed0.xml
32.36KB
EsDemo/.idea/dataSources.local.xml
1.79KB
EsDemo/.idea/dataSources.xml
1.6KB
EsDemo/.idea/encodings.xml
345B
EsDemo/.idea/inspectionProfiles/
-
EsDemo/.idea/inspectionProfiles/Project_Default.xml
155B
EsDemo/.idea/jarRepositories.xml
880B
EsDemo/.idea/misc.xml
823B
EsDemo/.idea/workspace.xml
8.64KB
EsDemo/db/tb_hotel.sql
61.98KB
EsDemo/src/main/java/com/
-
EsDemo/src/main/java/com/minos/
-
EsDemo/src/main/java/com/minos/EsDemoApplication.java
1.03KB
EsDemo/src/main/java/com/minos/demos/
-
EsDemo/src/main/java/com/minos/demos/web/
-
EsDemo/src/main/java/com/minos/demos/web/BasicController.java
2.11KB
EsDemo/src/main/java/com/minos/demos/web/PathVariableController.java
1.64KB
EsDemo/src/main/java/com/minos/demos/web/User.java
1.03KB
EsDemo/src/main/java/com/minos/demos/web/config/
-
EsDemo/src/main/java/com/minos/demos/web/config/EsMapperConfig.java
389B
EsDemo/src/main/java/com/minos/demos/web/constants/
-
EsDemo/src/main/java/com/minos/demos/web/constants/HotelConstants.java
1.95KB
EsDemo/src/main/java/com/minos/demos/web/mapper/
-
EsDemo/src/main/java/com/minos/demos/web/mapper/HotelMapper.java
255B
EsDemo/src/main/java/com/minos/demos/web/pojo/
-
EsDemo/src/main/java/com/minos/demos/web/pojo/Hotel.java
753B
EsDemo/src/main/java/com/minos/demos/web/pojo/HotelDoc.java
1.72KB
EsDemo/src/main/java/com/minos/demos/web/service/
-
EsDemo/src/main/java/com/minos/demos/web/service/IHotelService.java
245B
EsDemo/src/main/java/com/minos/demos/web/service/impl/
-
EsDemo/src/main/java/com/minos/demos/web/service/impl/HotelServiceImpl.java
538B
EsDemo/src/main/resources/
-
EsDemo/src/main/resources/application.yaml
681B
EsDemo/src/main/resources/static/
-
EsDemo/src/main/resources/static/index.html
79B
EsDemo/src/test/java/com/
-
EsDemo/src/test/java/com/minos/
-
EsDemo/src/test/java/com/minos/HotelDocumentTest.java
6.02KB
EsDemo/src/test/java/com/minos/HotelIndexTest.java
2.47KB
资源内容介绍
Spring Boot 集成 Elasticsearch package com.minos;import com.alibaba.fastjson.JSON;import com.minos.demos.web.constants.HotelConstants;import com.minos.demos.web.mapper.HotelMapper;import com.minos.demos.web.pojo.Hotel;import com.minos.demos.web.pojo.HotelDoc;import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;import org.elasticsearch.action.bulk.BulkRequest;import org.elasticsearch.action.delete.DeleteRequest;import org.elasticsearch.action.get.GetRequest;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.client.RequestOptions;import org.elasticsearch.client.RestHighLevelClient;import org.elasticsearch.client.indices.CreateIndexRequest;import org.elasticsearch.client.indices.GetIndexRequest;import org.elasticsearch.common.xcontent.XContentType;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;import java.util.List;@SpringBootTestclass HotelDocumentTest { @Autowired private HotelMapper hotelMapper; @Autowired private RestHighLevelClient client; /** * 测试添加文档的函数 * 该函数主要用于将Hotel对象转换为HotelDoc对象,并将其索引到Elasticsearch中 * 它演示了如何将实体对象映射到Elasticsearch文档,并进行索引 * * @throws IOException 如果在读取或索引文档时发生IO异常 */ @Test void testAddDocument() throws IOException { // 通过ID查询Hotel实体 Hotel hotel = hotelMapper.selectById(1973839294L); // 将Hotel实体转换为HotelDoc对象 HotelDoc hotelDoc = new HotelDoc(hotel); // 创建一个索引请求,指定索引名为"hotel",并设置文档ID为HotelDoc对象的ID IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString()); // 将HotelDoc对象转换为JSON字符串,作为索引文档的内容 request.source(JSON.toJSONString(hotelDoc), XContentType.JSON); // 执行索引请求,将文档索引到Elasticsearch中 client.index(request, RequestOptions.DEFAULT); } @Test /** * 测试获取文档操作 * 该方法演示了如何从酒店数据索引中检索特定文档,并打印出该文档的信息 * 它通过发送GET请求到指定的索引和文档ID,然后将返回的源数据解析为HotelDoc对象 * * @throws IOException 如果在与Elasticsearch客户端通信过程中发生错误,则可能抛出此异常 */ void testGetDocument() throws IOException { // 创建一个GET请求实例,指定索引名称为"hotel",文档ID为"1973839294" GetRequest request = new GetRequest("hotel", "1973839294"); // 使用默认的请求选项通过Elasticsearch客户端执行GET请求,并获取响应 GetResponse response = client.get(request, RequestOptions.DEFAULT); // 将响应的源数据转换为字符串形式 String json = response.getSourceAsString(); // 使用JSON库将JSON字符串解析为HotelDoc对象 HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class); // 打印解析出的HotelDoc对象 System.out.println(hotelDoc); } /** * 测试更新文档的函数 * 该测试函数演示了如何更新指定索引中的文档 * 更新操作涉及增加新的字段或修改现有字段的值 * * @throws IOException 如果更新请求过程中发生输入输出异常 */ @Test void testUpdateDocument() throws IOException { // 创建一个更新请求,指定要更新的文档所在的索引(index)和文档的唯一标识符(id) UpdateRequest request = new UpdateRequest("hotel", "1973839294"); // 构建要更新的内容,包括新的字段值对 // 在这里,我们为文档添加/更新了价格和星级名称 request.doc( "price", 300, "starName", "四钻" ); // 执行更新请求 // 这里使用了默认的请求选项(RequestOptions.DEFAULT),适用于大多数情况 client.update(request, RequestOptions.DEFAULT); } /** * 测试删除文档功能 * 该测试方法演示了如何发送一个删除请求以删除指定的文档 * * @throws IOException 如果与Elasticsearch服务器的交互中出现IO错误 */ @Test void testDeleteDocument() throws IOException { // 创建一个删除请求,指定要删除的文档所在索引为"hotel",文档ID为"1973839294" DeleteRequest request = new DeleteRequest("hotel","1973839294"); // 执行删除请求,使用默认的请求选项 client.delete(request, RequestOptions.DEFAULT); } @Test /** * 批量处理酒店数据到Elasticsearch * 该方法首先从数据库中检索所有酒店信息,然后将这些信息批量索引到Elasticsearch中 * 使用BulkRequest来执行批量操作,以提高效率和吞吐量 * * @throws IOException 如果与Elasticsearch的交互中发生错误 */ void testBulkRequest() throws IOException { // 从数据库检索所有酒店列表 List<Hotel> hotelList = hotelMapper.selectList(null); // 创建一个BulkRequest对象,用于添加批量操作 BulkRequest request = new BulkRequest(); // 遍历酒店列表,为每个酒店创建一个HotelDoc对象,并将其添加到批量请求中 for (Hotel hotel : hotelList) { HotelDoc hotelDoc = new HotelDoc(hotel); // 创建索引请求,并指定索引名称、文档ID和源数据 request.add(new IndexRequest("hotel").id(hotelDoc.getId().toString()) .source(JSON.toJSONString(hotelDoc), XContentType.JSON)); } // 执行批量请求 client.bulk(request, RequestOptions.DEFAULT); }}