前言
本篇博客主要讲解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以后的版本只能有一个类型)
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文章来源:https://www.toymoban.com/news/detail-404929.html
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操作
rest-high-level 7.6.2 API
在对应的业务类中注入RestHighLevelClient文章来源地址https://www.toymoban.com/news/detail-404929.html
@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);
}
如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!
到了这里,关于Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!