欢迎访问我的GitHub

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

本篇概览

  • 本篇是《java与es8实战》系列的第二篇,主要任务是为动手实战做好准备工作,包括这些内容
  1. 借助docker,快速部署es服务
  2. 借助docker-compose,以更简单的方式部署es集群和kibana服务
  3. 介绍实战中涉及的环境信息,例如JDK、软件、库的版本
  4. 聊聊java操作es的基本套路
  5. 为整个《java与es8实战》系列创建父工程,后面的实战有关的代码,全部写在这个父工程下面
  • OK,开始

借助docker,快速部署es服务

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

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

  1. 操作系统:macOS Monterey(M1 Pro芯片的MacBook Pro,16G内存)
  2. Docker:Docker Desktop 4.7.1 (77678)
  3. ElasticSearch:8.2.2
  4. Kibana:8.2.2
  5. JDK:openjdk 11.0.14.1
  6. Maven:3.8.5
  7. IDEA: 2022.1.2 (Ultimate Edition)
  8. SpringBoot:2.7.0

聊聊java操作es的基本套路

  • 从es官方的视角来看,提供了三种操作es的方式
  1. Java Transport Client :提供异步操作es的客户端API,自7.0.0版本开始被废弃,所以本系列是用不上了
  2. Java REST Client:这个算是大名鼎鼎了,平常用的也很多,它由Low Level和Hight Level两部分组成,Low Level负责负载均衡、容错、持续连接、底层日志跟踪等基本能力,Hight Level是基于Low Level实现的,提供了原有的Transport Client的客户端能力,提供同步和异步两种操作模式,从7.X版本开始,es官方就给出了迁移指导:推荐用户从Java REST Client迁移到Java API Client
  3. 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

  1. Spring Data模块下属的Spring Data Elasticsearch是推荐的es操作方案
  2. High Level REST Client是Spring Data中默认的底层实现
  3. 尽管Spring Data依然支持Java Transport Client,但推荐使用的是High Level REST Client
  4. 遗憾的是,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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.bolingcavalry</groupId>
<artifactId>elasticsearch-tutorials</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>elasticsearch-tutorials</name> <properties>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<!-- <maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>-->
<springboot.version>2.7.0</springboot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<elastic.version>8.2.2</elastic.version>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>${elastic.version}</version>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency> <!-- Needed only if you use the spring-boot Maven plugin -->
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency> </dependencies>
</dependencyManagement> </project>
  • 至此,准备工作算是完成了,接下来文章会很轻松,和大家聊聊关于Java API Client的一些重要知识点,毕竟后面写代码全指望它了

欢迎关注博客园:程序员欣宸

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

java与es8实战之二:实战前的准备工作的更多相关文章

  1. [Java聊天室server]实战之二 监听类

    前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更 ...

  2. 非阻塞同步算法实战(二)-BoundlessCyclicBarrier

    本人是本文的作者,首发于ifeve(非阻塞同步算法实战(二)-BoundlessCyclicBarrier) 前言 相比上一 篇而言,本文不需要太多的准备知识,但技巧性更强一些.因为分析.设计的过程比 ...

  3. Mybaits-plus实战(二)

    1. Mybaits-plus实战(二) 1.1. mybatis-plus插件 1.1.1. 用法 先举个例子介绍用法,如下:直接作为Bean注入,一般来讲插件太多印象性能,所以大部分插件都只在测试 ...

  4. apollo入门demo实战(二)

    1. apollo入门demo实战(二) 1.1. 下载demo 从下列地址下载官方脚本和官方代码 https://github.com/nobodyiam/apollo-build-scripts ...

  5. Spring Boot 揭秘与实战(二) 数据缓存篇 - EhCache

    文章目录 1. EhCache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 EhCache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门 ...

  6. Flink的sink实战之二:kafka

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Kurento实战之二:快速部署和体验

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. client-go实战之二:RESTClient

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. [原创].NET 分布式架构开发实战之二 草稿设计

    原文:[原创].NET 分布式架构开发实战之二 草稿设计 .NET 分布式架构开发实战之二 草稿设计 前言:本篇之所以称为草稿设计,是因为设计的都是在纸上完成的.反映了一个思考的过程. 本篇的议题如下 ...

  10. Selenium Web 自动化 - 项目实战(二)

    Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...

随机推荐

  1. 2021-08-15:给定一个字符串Str,返回Str的所有子序列中有多少不同的字面值。

    2021-08-15:给定一个字符串Str,返回Str的所有子序列中有多少不同的字面值. 福大大 答案2021-08-15: 返回值=上+新-修正. 时间复杂度:O(N) 空间复杂度:O(N). 代码 ...

  2. 一天吃透SpringCloud面试八股文

    1.什么是Spring Cloud ? Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Tas ...

  3. vue全家桶进阶之路2:JavaScript

    JavaScript(简称"JS")是当前最流行.应用最广泛的客户端脚本语言,用来在网页中添加一些动态效果与交互功能,在 Web 开发领域有着举足轻重的地位.JavaScript ...

  4. windows系统下python下载与安装以及可视化工具PyCharm安装

    1.python下载 python下载官网: https://www.python.org/ http://python.p2hp.com/ 中文网 点击进入官网,进入window下载页面. http ...

  5. 2014年蓝桥杯C/C++大学B组省赛真题(李白打酒)

    题目描述: 题目描述 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店 ...

  6. [Kotlin Tutorials 22] 协程中的异常处理

    协程中的异常处理 Parent-Child关系 如果一个coroutine抛出了异常, 它将会把这个exception向上抛给它的parent, 它的parent会做以下三件事情: 取消其他所有的ch ...

  7. 旧版Vue配置API_ROOT,开发、生产地址切换

    1 目录 config/dev.env.js1 'use strict' 2 const merge = require('webpack-merge') 3 const prodEnv = requ ...

  8. JUC同步锁原理源码解析三----CountDownLatch、CyclicBarrier

    JUC同步锁原理源码解析三----CountDownLatch.CyclicBarrier CountDownLatch.CyclicBarrier的来源 1.CountDownLatch的来源 A ...

  9. PostgreSQL 12 文档: 部分 II. SQL 语言

    部分 II. SQL 语言 这部份描述在PostgreSQL中SQL语言的使用.我们从描述SQL的一般语法开始,然后解释如何创建保存数据的结构.如何填充数据库以及如何查询它.中间的部分列出了在SQL命 ...

  10. Spring容器获取Bean的9种方式

    1 前言 随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean.比如,在某一些工具类.设计模式实现中需要使用到Spring容器 ...