【一】实战:SpringBoot与Elasticsearch完美融合,WebFlux响应式编程实现

【其一】安装新版的Elasticsearch(8.8.0)Kibana(8.8.0)

原文发布于:实战:SpringBoot与Elasticsearch完美融合,WebFlux响应式编程实现,欢迎使用 RSS 订阅获取最新更新。

1. 前言

文章包含以下内容:

  • 安装新版的Elasticsearch(8.8.0)Kibana(8.8.0)
  • SpringBoot 集成Elasticsearch CRUD和WebFlux 实现全响应式编程
    • Java17
    • spring-boot 3.1.2
    • SSL连接Elasticsearch
  • Filebeat(8.8.0)安装并上传SpringBoot 项目产生的日志,最后能在Kibana上查询到

搭建环境:

  • 已经安装Docker的GNU/linux主机

最近对响应式编程很来劲,什么都想用这个去写,就跟有了榔头看什么都是钉子一样。正好一些自己的项目想用上ES(Elasticsearch) ,所以干脆学学怎么做全响应式编程,和对ES的CRUD,当中还是碰到了挺多的问题,因为内容比较多,所以会分几节说明各个部分。

2. 安装新版的Elasticsearch(8.8.0)与Kibana(8.8.0)

Elasticsearch是啥就不用我介绍了吧,能够做到查询亿级数据毫秒级。

官方的安装文档在这里:run-elasticsearch-locally

太长不看的直接看下面的简单版本:

2.1 创建ES数据存储,插件,日志的目录

bash 复制代码
mkdir /dockerData/elasticsearch/data
mkdir /dockerData/elasticsearch/plugins
mkdir /dockerData/elasticsearch/logs

2.2 运行ES容器

bash 复制代码
创建network用来和kibana交互
docker network create elastic
拉取指定版本镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.0

docker run -d \
    --name elasticsearch \
    -e "ES_JAVA_OPTS=-Xms4096m -Xmx4096m" \
    -e "discovery.type=single-node" \
   -v /dockerData/elasticsearch/data:/usr/share/elasticsearch/data \
   -v /dockerData/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    -v /dockerData/elasticsearch/logs:/usr/share/elasticsearch/logs \
    --privileged \
    --network elastic \
    -p 9200:9200 \
    -p 9300:9300 \
docker.elastic.co/elasticsearch/elasticsearch:8.8.0
  • -d: 表示以"后台模式"(detached mode)运行容器,即使关闭终端或退出SSH会话,容器仍然保持运行状态。
  • -name elasticsearch: 指定容器的名称为"elasticsearch",以便于以后可以使用名称来管理和访问容器。
  • -e "ES_JAVA_OPTS=-Xms4096m -Xmx4096m": 设置Elasticsearch的Java虚拟机选项,这里设置初始堆内存(Xms)和最大堆内存(Xmx)为4GB,即4096MB,这个根据你的机器自己调整。
  • -e "discovery.type=single-node": 设置Elasticsearch的节点发现类型为单节点(single-node),意味着Elasticsearch将作为单独的节点运行,而不是作为集群中的一部分。
  • -v /dockerData/elasticsearch/data:/usr/share/elasticsearch/data: 将宿主机上的/dockerData/elasticsearch/data目录挂载到容器内的/usr/share/elasticsearch/data目录,用于持久化存储Elasticsearch的数据。
  • -v /dockerData/elasticsearch/plugins:/usr/share/elasticsearch/plugins: 将宿主机上的/dockerData/elasticsearch/plugins目录挂载到容器内的/usr/share/elasticsearch/plugins目录,用于存储Elasticsearch插件。
  • -v /dockerData/elasticsearch/logs:/usr/share/elasticsearch/logs: 将宿主机上的/dockerData/elasticsearch/logs目录挂载到容器内的/usr/share/elasticsearch/logs目录,用于存储Elasticsearch的日志文件。
  • -privileged: 提供容器以特权模式运行,这对于某些特殊需求可能是必要的。
  • -network elastic: 将容器连接到名为"elastic"的Docker网络,这个网络通常用于连接Elasticsearch、Kibana和其他Elastic Stack组件。
  • -p 9200:9200: 将宿主机的9200端口映射到容器内的9200端口,用于访问Elasticsearch的HTTP API。
  • -p 9300:9300: 将宿主机的9300端口映射到容器内的9300端口,用于Elasticsearch的节点间通信(集群通信)。
  • docker.elastic.co/elasticsearch/elasticsearch:8.8.0: 指定要使用的Elasticsearch Docker镜像及其版本,这里使用的是8.8.0版本。

可能会有安装过ES的同学要问,这里我直接使用"后台模式"(detached mode),那怎么看到第一次生成的token呢?别急,现在有新办法了,在安装kibana的时候会说到

2.3 运行Kibana容器

就下面两行,需要注意的,运行的这个Kibana,我是没有在后台模式运行的,方便等等看生成的验证码。

bash 复制代码
docker pull docker.elastic.co/kibana/kibana:8.8.0
docker run --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.8.0

当Kibana容器运行之后,用浏览器打开服务器的ip:5601 ,用的云服务的同学不要忘了配置上云服务配置安全组规则,接着会看到需要我们输入ES的token。

我们重新打开一个终端连接到服务器,然后输入以下命令进入到容器的终端

bash 复制代码
docker exec -it elasticsearch /bin/bash

然后通过下面的命令重新生成一个token

bash 复制代码
bin/elasticsearch-create-enrollment-token --scope kibana

此时你会看到终端会生成一个token,需要把这个token复制到浏览器kibana页面中,用草稿本记一下先。

还通过以下命令需要生成一个密码,记下来,等等登录kibana会用到

bash 复制代码
bin/elasticsearch-reset-password  -u elastic

如图:

填入token

输入完成之后,点击Configure Elastic,就会看到需要我们输出一个验证码

这个验证码,在刚刚打开Kibana的终端那可以找到,如下所示:

输入完成之后就需要我们刚刚生成的密码登录Kibana了。

到这一步完成了ES和Kibana的安装,你可以在新版的ES中探索一下有什么好玩的。

下一章节:【二】实战:SpringBoot与Elasticsearch完美融合,WebFlux响应式编程实现

相关推荐
Micro麦可乐11 小时前
最新Spring Security实战教程(十八)安全日志与审计:关键操作追踪与风险预警
java·spring boot·后端·安全·spring·安全审计
chanalbert13 小时前
SpringBoot设计基石:约定优于配置与模块化架构
spring boot·spring·spring cloud
风象南15 小时前
Spring Boot 的 3 种动态 Bean 注入技巧
java·spring boot·后端
皮皮林5511 天前
SpringBoot 加载外部 Jar,实现功能按需扩展!
java·spring boot
考虑考虑1 天前
feign异常处理
spring boot·后端·spring
gorgor在码农1 天前
Spring Boot多数据源切换:三种实现方式详解与实战
java·spring boot·后端·mybatis·mybatis plus·多数据源切换
言一木1 天前
【springboot组件开发】三方中间件自定义自动装载(rabbitmq/rocketmq/cmq)
spring boot·java-rocketmq·java-rabbitmq·中组件开发
chanalbert1 天前
Spring Boot诞生背景:从Spring的困境到设计破局
java·spring boot·spring
武昌库里写JAVA1 天前
【微服务】134:SpringCloud
java·开发语言·spring boot·学习·课程设计
cyc&阿灿1 天前
深度解析SpringBoot自动化部署实战:从原理到最佳实践
spring boot·后端·自动化