码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java与es8实战之二:实战前的准备工作


    合集 - Java基础技能(15)
    1.Spring Cloud Gateway编码实现任意地址跳转06-272.Java扩展Nginx之五:五大handler(系列最核心)07-153.quarkus依赖注入之七:生命周期回调08-054.Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)08-215.docker-compose快速部署elasticsearch-8.x集群+kibana08-226.java与es8实战之一:以builder pattern开篇08-23
    7.java与es8实战之二:实战前的准备工作08-24
    8.20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版08-279.java与es8实战之三:Java API Client有关的知识点串讲08-2810.java与es8实战之四:SpringBoot应用中操作es8(无安全检查)08-2911.java与es8实战之五:SpringBoot应用中操作es8(带安全检查:https、账号密码、API Key)08-3012.java与es8实战之六:用JSON创建请求对象(比builder pattern更加直观简洁)08-3113.LeetCode46全排列(回溯入门)09-0114.LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)09-0215.LeetCode952三部曲之三:再次优化(122ms -> 96ms,超51% -> 超91%)09-04
    收起

    欢迎访问我的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服务

    • 《java与es8实战》系列的重点是开发,因此不会花太多时间去讲解如何部署和配置es,基本上就是有个能用的es8环境即可
    • 推荐您参考《Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)》,这里面详细说明的如何在docker下快速部署es服务,以及一些常见的操作

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

    • 如果您觉得《Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)》的操作过于复杂,想更简单的部署一个es集群,外加kibana开箱即用,可以参考《docker-compose快速部署elasticsearch-8.x集群+kibana》,另外此文还会告诉您如何部署一个无需安全检查(证书、账号密码)的es集群

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

    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版本,详情如下表,来自官方
    image-20220610073638114
    • 由于《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

    
    <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.0modelVersion>
        <groupId>com.bolingcavalrygroupId>
        <artifactId>elasticsearch-tutorialsartifactId>
        <version>1.0-SNAPSHOTversion>
        <packaging>pompackaging>
        <name>elasticsearch-tutorialsname>
    
        <properties>
            <java.version>11java.version>
            <maven.compiler.source>11maven.compiler.source>
            <maven.compiler.target>11maven.compiler.target>
            
            <springboot.version>2.7.0springboot.version>
            <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
            <elastic.version>8.2.2elastic.version>
        properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>co.elastic.clientsgroupId>
                    <artifactId>elasticsearch-javaartifactId>
                    <version>${elastic.version}version>
                dependency>
    
                <dependency>
                    <groupId>com.fasterxml.jackson.coregroupId>
                    <artifactId>jackson-databindartifactId>
                    <version>2.12.3version>
                dependency>
    
                
                <dependency>
                    <groupId>jakarta.jsongroupId>
                    <artifactId>jakarta.json-apiartifactId>
                    <version>2.0.1version>
                dependency>
    
            dependencies>
        dependencyManagement>
    
    project>
    
    • 至此,准备工作算是完成了,接下来文章会很轻松,和大家聊聊关于Java API Client的一些重要知识点,毕竟后面写代码全指望它了

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

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

  • 相关阅读:
    JS垃圾回收与内存泄漏
    评价——灰色关联分析
    工资短信-模板参考
    【无标题】
    代码随想录训练营第47天休息日|210.课程表II
    【Linux】zabbix告警执行远程脚本报错Unsupported item key.问题汇总及解决方式
    学习笔记——Java Stream 源码学习
    Docker基于Minio搭建对象(文件)存储服务
    java基于SpringBoot+Vue的社区菜店 线上买菜系统elementui
    安徽怀宁领导一行莅临蓝海彤翔集团参观考察
  • 原文地址:https://www.cnblogs.com/bolingcavalry/p/17642375.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号