使用 Docker Compose 部署 Elasticsearch + Kibana

2023-10-30

本篇文章主要介绍了使用 Docker Compse 部署 Elasticsearch + Kibana,并整合到 Spring Boot 项目中的详细步骤。

Elasticsearch + Kibana 版本: 7.17.0(7 的最新版本);Spring Boot 版本:2.7.5 。

Kibana 官方文档Elasticsearch官方文档

服务器目录结构

—— root
  |—— mall  // 根目录
      |—— pack 
          |—— elastic
              |-- config
              	  |-- elasticsearch.yml		// Elasticsearch 配置文件
              |-- data	// Elasticsearch 数据目录
              |-- plugins       // Elasticsearch 插件目录
              |-- docker-compose.yaml	// 启动容器
              |-- kibana
              	  |-- kibana.yml	kibana 配置文件

部署 Elasticsearch 和 Kibana

启动容器

  1. config 目录下,编写 elasticsearch.yml 配置文件,内容如下。
network.host: 0.0.0.0
discovery.type: single-node
  1. kibana 目录下,编写 kibana.yml 配置文件,内容如下。
server.host: 0.0.0.0
server.name: kibana
  1. elastic 目录下,编写 docker-compose.yaml 配置文件,内容如下。
version: '3.3'
services:
    elasticsearch:
        restart: always
        image: elasticsearch:7.17.0    # 使用的镜像名称
        container_name: elasticsearch	# 容器名称
        ports:	# 指定暴露的端口
          - 9200:9200
          - 9300:9300
        environment: 
          - ES_JAVA_OPTS= -Xms2g -Xmx2g # 指定 JVM 内存大小
        volumes:	# 指定挂载目录
          - ~/mall/pack/elastic/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
          - ~/mall/pack/elastic/data:/usr/share/elasticsearch/data
          - ~/mall/pack/elastic/plugins:/usr/share/elasticsearch/plugins
        networks:	# 网络配置
           - elasticsearch-network
    kibana:
        restart: always
        image: kibana:7.17.0
        container_name: kibana
        ports:
         - 5601:5601
        depends_on:	# 服务依赖
          - elasticsearch
        volumes:
          - ~/mall/pack/elastic/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
        networks:
          - kibana-network
networks:
  elasticsearch-network:
  kibana-network:
  1. 执行如下命令,启动容器。
docker-compose up -d	// 启动容器
docker-compose logs -f  // 查看容器启动日志
  1. 分别访问 localhost:9200localhost:5601 网址。显示如下信息和界面,说明 Elasticsearch 服务和 Kibana 服务部署成功。
{
  "name" : "cf55d2d2cfd9",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "ZqDLEOikRW-W8YU4qQuC5A",
  "version" : {
    "number" : "7.17.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "bee86328705acaa9a6daede7140defd4d9ec56bd",
    "build_date" : "2022-01-28T08:36:04.875279988Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

image-20230605100450480.png

设置登陆密码

  1. 在 elasticsearch.yml 配置文件中添加如下配置
xpack.security.enabled: true
  1. 执行如下命令,进入到 elasticsearch 容器中。
docker exec -it elasticsearch /bin/bash
  1. 执行如下命令,设置密码。一共有七个用户,依次设置这七个用户的密码,我这里统一将密码设置成 123456。
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

image-20230605103218114.png

  1. 退出容器,然后在 kibana.yml 文件中添加如下配置。
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
  1. 重新启动容器,再次访问页面,会出现弹框,输入用户名和密码登陆即可。默认用户名为:elastic
docker-compose down
docker-compose up -d

完整配置文件内容

更多配置可以参考官方文档。

  • elasticsearsh.yml
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true
  • kibana.yml
server.host: 0.0.0.0
server.name: kibana
elasticsearch.username: "elastic"
elasticsearch.password: "123456"

Spring Boot 整合 Elasticsearch

Spring Data Elasticsearch 官方文档

添加依赖

Spring Boot 版本要与 Elasticsearch 版本对应上,对应关系如下图所示。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <!--  版本为 Spring Boot 版本  -->
    <version>2.7.5</version> 
</dependency>

image-20230605182211128.png

添加配置

在 application.yaml 配置文件中新增如下配置。

spring:
  elasticsearch:
    username: elastic
    password: 123456
    uris: http://192.168.107.65:9200  // 虚拟机地址
    connection-timeout: 10s

使用

本文只介绍 Elasticsearch 的基本使用,更详细的用法可以查看官方文档。

  1. 引入 ElasticsearchRestTemplate
@RestController
@RequestMapping("/demo")
public class Demo {
    @Resource
    private ElasticsearchRestTemplate elasticsearchRestTemplate;
    
    /**
    * 创建索引
    **/
    @GetMapping("/createIndex")
    public void createIndex() {
        IndexOperations indexOps = esRestTemplate.indexOps(IndexCoordinates.of("elasticsearch"));
        boolean result = indexOps.create();
    }
}
  1. 访问地址,创建索引。然后通过 Kibana 查看新增的索引。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-saUbKMoN-1686135145070)(null)]

问题

  1. elasticsearch 容器启动报错。原因是挂载的 data 目录权限不够。

    解决:执行命令 chmod -R 777 data ,然后重新启动容器即可。

image-20230605094800124.png

  1. elasticsearch 容器内存占用高达 13G。

    解决:在 docker-compose.yaml 文件中添加如下配置,指定 JVM 内存占用大小。

environment:
  - ES_JAVA_OPTS= -Xms2g -Xmx2g
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Docker Compose 部署 Elasticsearch + Kibana 的相关文章

随机推荐

  • vue3搜索功能

    目录 设置数据和搜索词 创建计算属性 实现搜索功能 在Vue 3中实现搜索功能可以通过以下步骤进行 假设你已经有一个包含数据列表的组件 并且你想要在该列表中实现搜索功能 设置数据和搜索词 首先 在你的组件中定义一个用于存储数据和搜索词的变量
  • 1- OpenCV+TensorFlow 入门人工智能图像处理-课程介绍

    人工智能最火的两个方向 自然语言处理和计算机视觉 OpenCV的图像处理 TensorFlow的使用 mark 供需关系理论 有需求所以才有提供 招聘网站 图像算法两万以上 都需要的技能 OpenCV TensorFlow 人工智能时代之计
  • xss闯关详解

    文章目录 xss闯关详解 level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10 level 11 开始使用burpsuite lev
  • [xbttracker] linux 下 xbt tracker环境搭建(ubuntu)

    系统环境 Ubuntu x64 20 04 操作系统 win10 xbt源码 https github com dangwei 90 xbt 参考文档 http xbtt sourceforge net tracker 官网 注 官网 xb
  • 86篇!近3年顶会上的语义分割重磅论文

    语义分割技术在众多领域得到应用 包括 环境感知 自动驾驶 机器人导航等 随着计算机视觉领域的不断发展 语义分割技术成为从事相关学习和研究人员需要了解和掌握的技能 这次我邀请了上市公司高级算法工程师 张老师 用1个小时带大家一起去探索语义分割
  • 基于OpenCV的两种圆弧长度测量方法

    基于OpenCV的两种圆弧长度测量方法 OpenCV是广泛使用的计算机视觉库 在图像处理中 圆弧的长度是一个非常重要的参数 本文将会介绍两种基于OpenCV的圆弧长度测量方法 一种是通过弧度法测量圆弧长度 另一种则是通过插值法测量圆弧长度
  • jar包打不开怎么处理?

    第一种情况 首先win R 输入cmd打开命令行窗口 输入javac 检查一下是否有问题 正常的情况应该是下图这种 如果不是这种的 重新弄配置下你的环境变量 第二种情况 找到jdk目录下的bin文件夹 用里面的javaw打开 可以设置为默认
  • 约瑟夫问题

    约瑟夫问题 约瑟夫问题一般有两种解决方法 一种数组 一种链表 本次采用数组方式说明解决 规则 n个人围成一个圈 每个人分别标注为1 2 n 要求从1号从1开始报数 报到k的人出圈 接着下一个人又从1开始报数 如此循环 直到只剩最后一个人时
  • eclipse web项目目录结构

    按照 Java EE 规范的规定 一个典型的 Web 应用程序有四个部分 1 公开目录 2 WEB INF web xml 文件 发布描述符 必选 3 WEB INF classes 目录 编译后的 Java类文件 可选 4 WEB INF
  • Vue实现动态锚点

    前几天做项目的时候 需要实现一个动态锚点的效果 如果是传统项目 这个效果就非常简单 但是放到 Vue 中 就有两大难题 1 在没有 jQuery 的 animate 方法的情况下 如何实现平滑滚动 2 如何监听页面滚动事件 在浏览了大量文章
  • STM32串口中断卡死主循环一直进中断问题分析-2021-10-05

    在一项目中 使用STM32作为主控 程序运行一段时间后概率出现主循环卡死现象 问题分析如下 1 程序USART2不停接收并处理串口数据 波特率115200 2 主循环卡死 3 USART1中断及TIM2中断响应函数运行正常 USART1及T
  • Html中截取url参数 实现HTML间的url传值

    大家好 今天遇到一个问题 页面全是html url传值 竟然获取不到参数值 A html 登录按钮 jQuery function login click function ajax url http 10 9 80 211 8090 ia
  • vue的多层主键的通信

    div div
  • 标准化与标准计分

    其实就是衡量 含金量 的一种方法 标准计分其实就是 距离 标准差 貌似和离差很像 离差就是 距离 标准差 10 50 对于分数来说 如果与平均分的距离越大 含金量就越高呢 在组数据中 可以求分均值 中位数以及标准差了 以考试成绩为例 现在
  • 模糊算法51单片机学习应用(一)模糊化

    模糊算法51单片机学习应用 一 模糊化 最近在尝试学习模糊算法 网上查了很多材料 大多都是写原理 粗略一看好像感觉我懂了 但是真的要做的话 却完全不知道从哪里开始入手 其实 对我们首次学习使用的人来说 我们不要那些高大上的原理 我们先理解他
  • react中样式的使用(内联和外部样式表)

    1 在src中新建三个子组件分别为 Header Footer Content 2 在里面分别写入代码 建议用rcc快捷方式 Header js中代码如下 import React Component from react var Head
  • Java中哈希集(HashSet)概念,实现以及操作

    Java中HashSet的用法 1 HashSet概念 2 Java文档中HashSet的实现 3 HashSet的构造函数 3 1 HashSet 3 2 HashSet int initialCapacity 3 3 HashSet i
  • Ubuntu 安装 pytorch

    使用 pytorch 进行深度学习训练 这也是我不得不选择 linux 的原因 系统 ubuntu 22 04 型号 Lenovo Yoga 14sIHU 2021 集显 Irix Xe lspci grep i vga 独显 GeForc
  • diff linux文件夹patch,Linux中的版本控制---diff和patch命令

    一 构造两个用于测试的文件 hello txt world txt 二 用diff命令比较两个文本文件的差异 对这个两个文本文件执行diff 命令 并通过输出重定向 将差异保存在diff txt文件中 diff u hello txt wo
  • 使用 Docker Compose 部署 Elasticsearch + Kibana

    本篇文章主要介绍了使用 Docker Compse 部署 Elasticsearch Kibana 并整合到 Spring Boot 项目中的详细步骤 Elasticsearch Kibana 版本 7 17 0 7 的最新版本 Sprin