Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD
前言
本篇博客主要讲解Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD操作。其它版本的spring boot集成ElasticSearch类似,只需要具体各自的版本是否匹配。通过本篇博客能够成功集成ElasticSearch并进行CRUD操作,适合刚接触ElasticSearch需要进行简单CRUD操作的读者。
ElasticSearch与Mysql的对应关系
在集成ElasticSearch之前需要明确一下ElasticSearch与Mysql的对应关系看,更便于之后对ElasticSearch的CRUD。
ElasticSearch | Mysql |
索引库(indices) | Database 数据库 |
类型(type) | Table 数据表 |
文档(Document) | Row 行 |
域字段(Field) | Columns 列 |
映射配置(mappings) | 每个列的约束(类型、长度) |
ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型)ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型)
ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型)
Spring boot 集成 ElasticSearch
确定集成的版本号
Spring boot集成ElasticSearch首先需要确定各自的版本号,如果各自版本号不匹配会出现版本不兼容问题,以及对应功能使用不了。
查询spring boot 匹配ElasticSearch的版本:版本匹配查询
spring boot项目中添加依赖
在pom.xml文件中添加以下内容:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.6.2</version> </dependency>
初始化
一个RestHighLevelClient实例需要一个REST底层客户端构建器
咱们新建一个配置类:ElasticSearchConfig
import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author : [WangWei] * @version : [v1.0] * @className : ElasticSearchConfig * @description : [ElasticSearch配置类] * @createTime : [2022/10/14 14:36] * @updateUser : [WangWei] * @updateTime : [2022/10/14 14:36] * @updateRemark : [描述说明本次修改内容] */ @Configuration public class ElasticSearchConfig { /* * @version V1.0 * Title: restHighLevelClient * @author Wangwei * @description 创建构造器 * @createTime 2022/10/17 16:35 * @param [] * @return org.elasticsearch.client.RestHighLevelClient */ @Bean public RestHighLevelClient restHighLevelClient(){ RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("127.0.0.0", 9200, "http"))); return client; } } }
CRUD操作
在对应的业务类中注入RestHighLevelClient
@Autowired private RestHighLevelClient restHighLevelClient; /* * @version V1.0 * Title: testCreatIndex * @author Wangwei * @description 创建索引 * @createTime 2022/10/17 17:15 * @param [] * @return void */ public void testCreatIndex() throws IOException { //创建索引请求 CreateIndexRequest request = new CreateIndexRequest("test_index"); //客户端执行请求IndicesClient,请求后获得相应 CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT); System.out.println(createIndexResponse); } /* * @version V1.0 * Title: testDeleteIndex * @author Wangwei * @description 删除索引 * @createTime 2022/10/17 17:15 * @param [] * @return void */ public void testDeleteIndex() throws IOException { DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test_index"); //执行删除索引的方法 AcknowledgedResponse delete = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT); //查看是否删除成功 System.out.println(delete.isAcknowledged()); } /* * @version V1.0 * Title: testAddDocument * @author Wangwei * @description 添加文档 * @createTime 2022/10/17 17:24 * @param [] * @return void */ public void testAddDocument() throws IOException { //创建对象 ElasticSearchWordModel elasticSearchWordModel=new ElasticSearchWordModel; elasticSearchWordModel.setText("David"); elasticSearchWordModel.setAnalyzer("ICU分词器"); //创建请求 IndexRequest request = new IndexRequest("test_index"); //设置这条文档的id为1 request.id("1"); //将数据放入请求 request.source(JSON.toJSONString(elasticSearchWordModel), XContentType.JSON); //向客户端发送请求,获取相应的结果 IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT); //输出信息和状态 System.out.println(indexResponse.toString()); System.out.println(indexResponse.status()); } /* * @version V1.0 * Title: testGetDocument * @author Wangwei * @description 获取文档信息 * @createTime 2022/10/17 17:25 * @param [] * @return void */ public void testGetDocument() throws IOException { //构造条件,这选择的是查询 GetRequest test_index = new GetRequest("test_index","1"); GetResponse documentFields = restHighLevelClient.get(test_index, RequestOptions.DEFAULT); //打印文档的内容 System.out.println(documentFields.getSourceAsString()); //返回全部内容 System.out.println(documentFields); }
如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!
ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型) ps:一个索引库下可以有不同类型的索引(目前6.X以后的版本只能有一个类型)