注:本文章基于尚硅谷Springboot高级特性相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!
文章目录
前言
`我们的应用经常需要添加检索功能,开源的ElasticSerach是目前全文搜索殷勤的首先,可以快速的存储,搜索和分析海量数据;
一、Elasticserach简介
Elasticserach是面向文档的,意味着它存储整个对象或者文档;在Elasticserach中,你对文档进行索引,检索,排序和过滤而不是对行列数据。这是一种新的思考数据的方式,也是ElasticSerach能支持复杂全文检索的原因
存储数据到Elasticderach的行为叫索引,但在索引一个文档之前,需要确定文档索引在哪里;
一个Elasticserach集群可以包含多个索引,相应的每个索引可以包含多个类型,这些不同的类型存储着多个文档,每个文档又有多个属性
可以类比mysql数据库,索引类似于数据库,类型类似于不同的表,文档类似于表中的一条数据,属性类似于一条数据的一个子属性
支持RESFUL风格,改变请求方式即可对文档数据进行基本的增删改查
GET用来检索文档,DELETE用来删除文档,HEAD指令用来检查文档是否存在,PUT用来插入或者更新文档
Springboot默认支持两种技术来和ES交互;
1.Jest(默认不生效)
需要导入jest的工具包(io.serachbox.JestClient)
2.SpringData ElasticSercach【ES版本有可能不合适】
版本对应关系:
如果版本不适配:
(1)升级SpringBoot版本
(2)安装对应版本的ES
- Client节点信息:clusterNodes;clusterName
- ElasticserachTemplate操作es
- 编写一个ElasticserachRepository的子接口来操作ES;
二、SpingBoot整合Jest操作ES
(1)引入Elasticserach依赖文件:
<!--Springboot默认使用的ElasticSerach模块--!>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>-->
<!--SpringBoot使用Jest--!>
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>5.3.3</version>
</dependency>
编写配置文件:
Spring.elasticserach.jest.uris:http://{你的主机ip地址}:9200
(2)编写测试文件测试插入:
@Autowired
JestClient jestclient;
@Test
public void contestLoads(){
//1.给Es索引中保存一个文档,这里Article的类可以自行编写
Article article =new Article(1,“好消息”,"zhangsan","Hello Word");
//2.创建一个索引功能
Index index=new Index.Builder(article).index("atguigu").type("news).build();
//执行
jestClient.execute(index);
}
查询结果:
(3)编写测试文件测试搜索:
@Test
public void serach(){
//1.查询表达式(可以根据官方文档按照自己的需求进行编写)
String json="填你需要的,这里不再演示"
//2.创建一个搜索功能
Serach serach=new Serach.Builder(json).index("atguigu").addtype("news).build();
//执行
jestClient.execute(index);
}
运行结果:
更多操作可以参考GitHub的jest官方文档
三.Springboot整合SpringDataElasticSerach
(1)编写配置文件;
spring.data.elasticserach.cluster-name=elasticserach
spring.data.elasticserach.cluster-nodes={你的主机地址}:9300
这里可以运行一下看是否报错,如果报错了要去看一下是不是上面说的版本问题
(2)编写测试文件;
编写继承ElasticserachRepository<Book,Integer>接口
在接口中可以有多种方法,具体可以参考官方文档,重要掌握前面的Jest方式即可
总结
这次的学习就到此为止了,期待你的一键三连,一起努力吧么么哒!!