java与es8实战之二:实战前的准备工作

傲渊山岳  金牌会员 | 2023-8-31 21:32:39 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 902|帖子 902|积分 2706

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览


  • 本篇是《java与es8实战》系列的第二篇,主要任务是为动手实战做好准备工作,包括这些内容

  • 借助docker,快速部署es服务
  • 借助docker-compose,以更简单的方式部署es集群和kibana服务
  • 介绍实战中涉及的环境信息,例如JDK、软件、库的版本
  • 聊聊java操作es的基本套路
  • 为整个《java与es8实战》系列创建父工程,后面的实战有关的代码,全部写在这个父工程下面


  • OK,开始
借助docker,快速部署es服务

借助docker-compose,以更简单的方式部署es集群和kibana服务

介绍实战中的环境信息,给您作为参考


  • 操作系统:macOS Monterey(M1 Pro芯片的MacBook Pro,16G内存)
  • Docker:Docker Desktop 4.7.1 (77678)
  • ElasticSearch:8.2.2
  • Kibana:8.2.2
  • JDK:openjdk 11.0.14.1
  • Maven:3.8.5
  • IDEA: 2022.1.2 (Ultimate Edition)
  • SpringBoot:2.7.0
聊聊java操作es的基本套路


  • 从es官方的视角来看,提供了三种操作es的方式

  • Java Transport Client :提供异步操作es的客户端API,自7.0.0版本开始被废弃,所以本系列是用不上了
  • Java REST Client:这个算是大名鼎鼎了,平常用的也很多,它由Low Level和Hight Level两部分组成,Low Level负责负载均衡、容错、持续连接、底层日志跟踪等基本能力,Hight Level是基于Low Level实现的,提供了原有的Transport Client的客户端能力,提供同步和异步两种操作模式,从7.X版本开始,es官方就给出了迁移指导:推荐用户从Java REST Client迁移到Java API Client
  • Java API Client:官方主推方案,依赖Elasticsearch core,对请求和响应都有强类型约束,支持jackson和JSON-b等两种序列化&反序列化方案,所有API都提供了同步和异步两种方式,推荐使用fluent style+lambda模式编码


  • 从以上小结可以看出,在es8.x的环境下,使用Java API Client是首选,不过旧代码以Java REST Client居多,拿来也能在es8环境使用(通过一个api设置,让请求的header中带有兼容信息,es服务器收到此信息会以7.x模式处理请求)
  • 再从spring视角来看如何操作es

  • Spring Data模块下属的Spring Data Elasticsearch是推荐的es操作方案
  • High Level REST Client是Spring Data中默认的底层实现
  • 尽管Spring Data依然支持Java Transport Client,但推荐使用的是High Level REST Client
  • 遗憾的是,Spring Data目前还不支持Java API Client,也不支持es的8.x版本,详情如下表,来自官方


  • 由于《java与es8实战》系列已将es版本固定为8.2,因此,编码过程中,es操作方案选择es官方的Java API Client,和Spring Data不会有关系了
为整个《java与es8实战》系列创建父工程


  • 整个系列后面的文章,少不了写代码,还是提前建好工程吧,用maven建立一个父工程,后面的代码都放在这个父工程下面,方便jar包版本和代码资源的统一管理
  • 新建名为elasticsearch-tutorials的maven工程,其pom.xml内容如下,可见非常简单,仅仅是对jar做了些管理,再定义了一些常量,今后新增的子工程可以用到,例如SpringBoot版本为2.7.0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>com.bolingcavalry</groupId>
  7.     <artifactId>elasticsearch-tutorials</artifactId>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <packaging>pom</packaging>
  10.     <name>elasticsearch-tutorials</name>
  11.     <properties>
  12.         <java.version>11</java.version>
  13.         <maven.compiler.source>11</maven.compiler.source>
  14.         <maven.compiler.target>11</maven.compiler.target>
  15.         
  16.         <springboot.version>2.7.0</springboot.version>
  17.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18.         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  19.         <elastic.version>8.2.2</elastic.version>
  20.     </properties>
  21.     <dependencyManagement>
  22.         <dependencies>
  23.             <dependency>
  24.                 <groupId>co.elastic.clients</groupId>
  25.                 <artifactId>elasticsearch-java</artifactId>
  26.                 <version>${elastic.version}</version>
  27.             </dependency>
  28.             <dependency>
  29.                 <groupId>com.fasterxml.jackson.core</groupId>
  30.                 <artifactId>jackson-databind</artifactId>
  31.                 <version>2.12.3</version>
  32.             </dependency>
  33.             
  34.             <dependency>
  35.                 <groupId>jakarta.json</groupId>
  36.                 <artifactId>jakarta.json-api</artifactId>
  37.                 <version>2.0.1</version>
  38.             </dependency>
  39.         </dependencies>
  40.     </dependencyManagement>
  41. </project>
复制代码

  • 至此,准备工作算是完成了,接下来文章会很轻松,和大家聊聊关于Java API Client的一些重要知识点,毕竟后面写代码全指望它了
欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表