袁庭新老师ES系列15节|Elasticsearch客户端基础操作
前言
上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢?在ES官网中提供了各种语言的客户端,我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择,那么他们有什么区别?这一章节袁老师带领大家来学习Elasticsearch客户端相关的内容。
一. ES客户端介绍
Elasticsearch客户端详解介绍可参考Elasticsearch官网介绍。
在Elasticsearch官网中提供了各种语言的客户端:

注意点击进入后,选择版本到6.2.4版本 ,因为我们之前按照的都是6.2.4版本讲解的。进入后可以通过官方文档了解和学习Java客户端相关的知识。
二. 搭建工程环境
1.创建一个Spring Initalizr类型的项目,项目名称设置为【es-client】。

2.创建项目时,勾选Lombok、Spring Boot DevTools和Spring Web依赖。

注意:这里我们直接导入了SpringBoot的启动器,方便后续讲解。
3.将resource目录下自动生成的application.properties文件修改成application.yml。
4.在项目的pom.xml文件中手动引入Elasticsearch的High-level-Rest-Client等相关的依赖。
三. 索引库及映射
创建索引库的同时,我们也会创建type及其映射关系,但是这些操作不建议使用Java客户端完成,原因如下:
索引库和映射往往是初始化时完成,不需要频繁操作,不如提前配置好。
官方提供的创建索引库及映射API非常繁琐,需要通过字符串拼接JSON结构。
因此,这些操作建议还是使用我们之前学习的Rest风格API去实现。
在项目的com.yx.pojo包下创建Product商品类,以这样一个商品数据为例来创建索引库。
分析一下数据结构:

使用Kibana控制台向集群中创建yx索引库并编写映射配置(如果之前创建过yx索引库则先删除)。
四. 索引数据操作
有了索引库之后,我们接下来看看如何对索引库中的数据进行增删改查操作。操作MySQL数据库:
1.获取数据库连接。
2.完成数据的增删改查操作。
3.释放资源。
1.初始化客户端
对索引库做任何操作,都需要通过RestHighLevelClient客户端来完成。
1.在项目的test测试文件夹下创建com.yx.es包,并在该包下创建一个ElasticsearchTests测试类。
2.然后在ElasticsearchTests类中编写RestHighLevelClient客户端的初始化方法init()和关闭方法close()。
2.新增文档
新增文档的实现是,先将数据封装到POJO对象中,然后通过restHighLevelClient对象来向索引库中新增数据。
2.1.新增文档实现
1.在ElasticsearchTests类中编写新增文档的insert()方法。
2.运行insert()方法,输出结果见下:
3.运行insert()方法可能会报错,具体解决方案见下。
2.2.新增文档异常
1.如果导入Elasticsearch依赖时不指定其版本,可能导致找不到XContentType类。解决的方案就是在pom.xml文件中手动添加Elasticsearch对应版本的依赖,比如手动指定Elasticsearch的版本为6.4.3。如果没有这个问题,则忽略此步骤。
2.如果运行insert()方法提示java.lang.NullPointerException空指针异常,则可能的原因是@Test注解的包导入错误,注意导入的包是org.junit.Test而非org.junit.jupiter.api.Test。
3.查看文档
根据Rest风格,查看文档是根据文档id进行GET查询操作,难点是对结果的解析。
1.在ElasticsearchTests类中编写查看文档的select()方法。
2.运行select()方法,输出结果见下:
4.修改文档
新增文档时,如果传递的id是已经存在的,则会完成修改文档操作,如果id不存在,则是新增文档操作。
1.在ElasticsearchTests类中编写修改文档的update()方法。
2.运行update()方法,输出结果见下:
5.删除文档
根据id删除文档。
1.在ElasticsearchTests类中编写删除文档的delete()方法。
2.运行delete()方法,输出结果见下:
五. 结语
Elasticsearch客户端基础部分的内容袁老师就给大家介绍完了。回顾下这一章节我们学习的主要内容,介绍了ES客户端项目工程搭建、索引库及映射、索引数据操作,主要重点介绍了索引数据的增删改查操纵。关于ES客户端基础部分的内容就介绍到这里,下一章节袁老师带领大家学习Elasticsearch客户端高级操作部分的内容。