当前位置: 首页 > wzjs >正文

南山网站建设公承德市住房和城乡建设局网站

南山网站建设公,承德市住房和城乡建设局网站,做电商网站货源,搭建个人视频网站接上篇《7、文档操作》 上一篇我们学习了ElasticSearch的文档的新增、查询、删除和修改操作。本篇我们开始进行代码实操,使用Java语言编写的RestClient进行文档及索引的操作。 一、引言 在前面我们已经学习了如何利用DSL语句去操作ElasticSearch,不管是…

接上篇《7、文档操作》
上一篇我们学习了ElasticSearch的文档的新增、查询、删除和修改操作。本篇我们开始进行代码实操,使用Java语言编写的RestClient进行文档及索引的操作。

一、引言

在前面我们已经学习了如何利用DSL语句去操作ElasticSearch,不管是索引库还是文档的增删改查,都可以做。但是技术是要使用在项目中的,作为Java程序员,肯定是需要通过Java代码去调用ElasticSearch的相关操作的,要想实现这些,就必须使用官方的RestClient程序。那么RestClient究竟是什么呢?我们接下来去逐步学习它。

二、什么是RestClient

Elasticsearch官方提供的RestClient是一个用于与Elasticsearch集群进行HTTP通信的客户端(支持Java、PHP、Python、Ruby等多种语言)。它是Elasticsearch推荐的Java客户端之一,专为高性能和易用性设计。与传统的TransportClient不同,RestClient基于HTTP协议,兼容性更好,支持Elasticsearch的所有版本。
官方文档:https://www.elastic.co/guide/en/elasticsearch/client/index.html

其中Java客户端的操作文档:
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/index.html

(一)特点

1、基于HTTP协议:使用RESTfulAPI与Elasticsearch集群通信,兼容Elasticsearch的所有版本。不需要依赖Elasticsearch的内部协议,减少了版本兼容性问题。
2、轻量级和高性能:使用ApacheHttpClient作为底层实现,支持连接池、请求重试、超时设置等功能。对异步和非阻塞I/O也支持,适合高并发场景。
3、易于集成:提供同步和异步两种请求方式。支持JSON数据的序列化和反序列化。
4、可扩展性强:支持自定义请求拦截器、失败重试策略、节点选择器等。
5、官方维护:由Elasticsearch官方团队维护,更新及时,文档齐全。

(二)使用场景

1、在Java应用程序中与Elasticsearch集群进行交互。
2、需要高性能、低延迟的搜索和索引操作。
3、需要与多个Elasticsearch版本兼容。

(三)Java程序依赖和示例

在Java中要使用RestClient,需要在项目中添加以下Maven依赖:

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.17.0</version> <!-- 根据 Elasticsearch 版本选择 -->
</dependency>

以下是一个简单的示例,演示如何使用RestClient连接到Elasticsearch集群并执行搜索操作:

import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetIndexResponse;public class ElasticsearchRestClientExample {public static void main(String[] args) {// 1. 创建 RestClient 客户端try (RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http") // Elasticsearch 地址))) {// 2. 创建一个获取索引信息的请求GetIndexRequest request = new GetIndexRequest("my_index"); // 替换为你的索引名称// 3. 执行请求并获取响应GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);// 4. 处理响应System.out.println("索引存在: " + response.getIndices().length > 0);} catch (Exception e) {e.printStackTrace();}}
}

核心组件

●RestClient:底层HTTP客户端,负责与Elasticsearch集群通信。支持多节点配置,自动处理节点故障和负载均衡。
●RestHighLevelClient:高级客户端,封装了常用的Elasticsearch操作(如索引、搜索、聚合等)。提供了更友好的 API,适合大多数场景。
●RequestOptions:用于配置请求的通用选项,如超时时间、请求头等。
●HttpHost:表示Elasticsearch集群中的一个节点,包含协议、主机名和端口。

三、学习计划

我们将通过以下计划学习RestClient如何操作索引库:
利用JavaRestClient实现创建、删除索引库,判断索引库是否存在。
根据课前资料提供的酒店数据创建索引库,索引库名为hotel,mapping属性根据数据库结构定义。基本步骤如下:

1.导入课前资料Demo
2.分析数据结构,定义mapping属性
3.初始化JavaRestClient
4.利用JavaRestClient创建索引库
5.利用JavaRestClient删除索引库
6.利用JavaRestClient判断索引库是否存在

四、导入课前资料Demo

首先导入课前资料提供的数据库数据以及Java的Demo代码:

下载链接: 
https://pan.baidu.com/s/1vR7UnF09shi0AVjEOg0OEg 提取码: 5ubu

(一)导入数据库

然后我们将其中的tb_hotel.sql下载下来,在我们的电脑上安装好Mysql数据库,以及操作数据库的客户端软件(我用的是sqlyog),然后在数据库客户端创建一个名为“heima”的数据库(Demo中的数据库名是这个,如果自己想另外起名,记得修改Demo中的数据库名):

创建完数据库后,导入相关的SQL脚本:

然后我们就可以看到在heima数据库中,有一张名为tb_hotel的表:

(二)导入Java程序

我们打开Java编译器(这里我使用的是IntelliJ IDEA 2022.3.3),点击“文件-打开...”操作:

打开解压后的hotel-demo工程,目录如下:

然后点击application.yaml配置文件,修改一下datasource的配置内容,使其和你们本地数据库连接端口,账号密码一致。另外建议将默认的com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver。

(三)主目录概述

主目录如下:

在src目录下,我们有一个main文件夹,这是Java项目的主要源代码存放位置。在main文件夹下,有一个java文件夹,专门存放Java源代码。再往下,我们有一个cn.itcast.hotel文件夹,这是我们的项目包名,所有的源代码文件都在这个包或其子包中。
在cn.itcast.hotel文件下,我们有五个子文件夹:constants、mapper、pojo、service、web,以及一个HotelDemoApplication文件。

1、constants文件夹

这个文件夹下有一个HotelIndexConstants文件,用于存放一些常量。例如,Elasticsearch索引的映射模板(Mapping Template)就定义在这里。

package cn.itcast.hotel.constants;public class HotelIndexConstants {public static final String MAPPING_TEMPLATE = "{\n" +"  \"mappings\": {\n" +"    \"properties\": {\n" +"      \"id\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +//其他代码省略...};
}

MAPPING_TEMPLATE是一个字符串常量,定义了Elasticsearch索引的映射信息。例如,这里指定了id字段的类型为keyword。这种常量管理方式使得我们的代码更加清晰、易于维护。

2、mapper文件夹

在mapper文件夹下,有一个HotelMapper接口文件。这是MyBatis Plus的Mapper接口,用于操作数据库中的tb_hotel表。

package cn.itcast.hotel.mapper;import cn.itcast.hotel.pojo.Hotel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface HotelMapper extends BaseMapper<Hotel> {
}

HotelMapper接口继承了BaseMapper<Hotel>,这意味着我们可以直接使用MyBatis Plus提供的一系列CRUD(创建、读取、更新、删除)方法,而无需自己编写SQL语句。

3、pojo文件夹

pojo文件夹下存放的是Java实体类,包括Hotel、HotelDoc、PageResult和RequestParams四个文件。其中:
Hotel类对应于数据库中的tb_hotel表。
HotelDoc类是一个专门用于Elasticsearch文档存储和检索的Java实体类。这个类提供了一个接受Hotel对象的构造函数,这个构造函数会自动将Hotel对象中的属性值复制到HotelDoc对象中。这样做可以方便地将数据库中的酒店数据转换为Elasticsearch文档数据。
PageResult类是一个用于分页结果封装的Java实体类。它通常用于封装从数据库或Elasticsearch中检索到的分页数据。
RequestParams类是一个用于封装请求参数的Java实体类。它通常用于封装前端发送给后端的查询条件。

4、service文件夹

在service文件夹下,有一个impl文件夹和一个IHotelService接口文件。impl文件夹下是IHotelService接口的实现类HotelService。
服务层(Service Layer)是业务逻辑的核心部分,通常包含业务方法,用于处理具体的业务需求。IHotelService定义了业务接口,而HotelService则是这些接口的具体实现。

5、web文件夹

在web文件夹下,有一个HotelController文件。这是Spring MVC的控制器类,用于处理HTTP请求。
控制器类通常负责接收客户端的请求,调用服务层的方法处理业务逻辑,然后返回响应结果给客户端。在这个项目中,HotelController将负责处理与酒店相关的HTTP请求。

5、HotelDemoApplication类

这个类是Spring Boot应用的启动类,它包含了应用的主要配置和启动逻辑。

(四)测试目录概述


测试目录下,是用于单点测试的程序,主要就是来测试我们的文档、索引以及搜索的程序。其中:
HotelDocumentTest使用来测试使用RestClient操作文档的代码。
HotellndexTest使用来测试使用RestClient操作索引的代码。
HotelSearchTest使用来测试使用RestClient操作搜索的代码。

至此,我们对于RestClient的概念介绍,以及对于本节课程的计划,和Demo的导入以及描述全部介绍完毕,下一篇我们继续剖析即将要操作的tb_hotel表结构的具体含义,以及我们做索引需要考虑的具体问题。

参考:《黑马Elasticsearch全套教程》

转载请注明出处:https://blog.csdn.net/acmman/article/details/145671990


文章转载自:

http://G9EMX1Vt.tfbpz.cn
http://p8aOQR01.tfbpz.cn
http://H5wTekjq.tfbpz.cn
http://GRKO6e5y.tfbpz.cn
http://1KUSzW0E.tfbpz.cn
http://kkHUsYZn.tfbpz.cn
http://iLiLGeEu.tfbpz.cn
http://rmZx9x9d.tfbpz.cn
http://aNBL3U7F.tfbpz.cn
http://fdiSJf7v.tfbpz.cn
http://58vGTQxW.tfbpz.cn
http://XoWrB1r5.tfbpz.cn
http://xDrkbMUP.tfbpz.cn
http://L2Ch01yD.tfbpz.cn
http://Z8z0pSFK.tfbpz.cn
http://YLmCfWd5.tfbpz.cn
http://tgZPeBJ2.tfbpz.cn
http://I3oEWalC.tfbpz.cn
http://HVGrbcbX.tfbpz.cn
http://x3ddn4TT.tfbpz.cn
http://ELme2I8q.tfbpz.cn
http://xUOFATYM.tfbpz.cn
http://06j7HlYo.tfbpz.cn
http://d8xF2xRu.tfbpz.cn
http://UIvNZ6nL.tfbpz.cn
http://oyltD0BD.tfbpz.cn
http://xbBs54hg.tfbpz.cn
http://EHZiSPhd.tfbpz.cn
http://RIazAmYu.tfbpz.cn
http://UaoC3uti.tfbpz.cn
http://www.dtcms.com/wzjs/651954.html

相关文章:

  • 如何制作和设计公司网站wordpress部署wamp
  • 做虚拟货币交易网站柳州市网站制作公司
  • 诚信建设网站的作用服装品牌网站建设
  • 如何做全景素材网站旅游网站建设与规划
  • 公司门户网站什么意思多少钱要交税
  • 外管局网站 报告怎么做wordpress更改后台登录路径
  • 做中介开什么网站北京搬家公司哪家好
  • 上海高端it网站建设如何用文档创建一个网站
  • 茶庄网站模板原画培训价格一般是多少
  • 网页游戏网站7下载cmsv7
  • 广州手机网站建设报价网站建设顶层设计
  • 建设网站英文翻译企业网站的制作与维护
  • 翻书效果网站wordpress 发邮件插件
  • 用wordpress建站难吗手机自助网站建设
  • 2016企业网站模板中文东莞网页设计与制作教程
  • 新闻类网站模板平面设计app软件有哪些
  • 深圳推荐企业网站制作维护seo黑帽是什么意思
  • 东莞哪些网络公司做网站比较好天津做流产五洲网站
  • 企业网站用哪个cms好iis配置wap网站
  • asp网站建设运用的技术手机论坛
  • 网站设计的七个原则北网站建设
  • wep购物网站开发模板济宁市任城区建设局网站
  • 网站如何做原创文章ps高手教学网站
  • 网站模版可以套用吗大气公司网站源码
  • 广州专业网站改版wordpress文章输入密码可见
  • 如何建立自己的网站c 网站做微信收款功能
  • 做二维码报名网站自由空间网站建设
  • 建设门户网站的公司软件工程师证书含金量
  • 淘宝做女鞋在哪个网站找货贵阳网站建设方案策划
  • 企业做网站属于广告宣传费吗行业门户网站程序