ElasticSearch Docker 部署实例

news2024/12/26 3:22:05

文章目录

  • 前言
  • 基本环境构建
    • Java安装
    • docker安装
    • es部署
      • 安装ES
      • 验证安装
    • 安装kibana
  • 设置密码
    • 进入es容器
    • 安装Vim
    • 修改es容器配置文件
    • 设置es访问密码
    • 设置Kibana密码
      • 理想状态
      • 方案二修改挂载
  • 安装IK分词器
    • 安装ik分词器
      • 在线安装
      • 离线安装

前言

虽然说要停更,但是有些东西还是需要记录一下的,尤其是这种,不需要动脑子,但是就是容易忘记需要注意的操作是需要进行记录的。

那么本篇博文需要做的就是使用docker容器部署ElasticSearch,如何从0开始进行搭建,同时设置账户和密码。
这里先说明一下的是,这里部署的是单节点的ElasticSearch,实话实话,之所以搞这个还是为了完成WhiteHole的一个搜索功能,但是考虑到服务成本的问题,所以还是考虑单节点。实际上,我们是完全可以考虑使用Mysql(>=5.7) 的分词来实现类似的效果的,因为数据量并不多的情况下,使用这个也是可以考虑的,但是为了考虑到以后扩展,还是打算先把Es给做进去,同时提供两套实现方案,后期通过nacos注册中心进行灵活调配,我使用哪一种方案。

不过也确实,脱离场景谈技术都是扯犊子,这套技术栈很好,但是对于当前的WhiteHole来说,属于是典型的堆技术栈,只能说面试唬唬人,从此以后我们具备了搭建分布式架构,并基于java微服务技术完成这一架构的开发能力,同时具备了多语言开发能力。

OK,吐槽归吐槽,我们还是来说一说,我们如何搭建。这里我使用的服务器是centos8,4核8GB。这里请注意你的系统版本。

基本环境构建

那么在开始之前,我们需要做的就是搭建好我们的环境。

Java安装

sudo yum -y install java-11-openjdk-devel

或:

sudo yum -y install java-11-openjdk

这两个都可以,上面那个把Java的一些额外的东西都会给你搞好。

docker安装

  1. 卸载可能存在的版本(看你自己,非必要)
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

  1. 安装docker

2.1 首先安装依赖:

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

2.2 然后设置镜像

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache --refresh

2.3 最后安装社区版本

yum install -y docker-ce

到此docker安装完毕。

es部署

这个可以去docker 镜像那里去拉取,我这里也有一个7.12的
链接:https://pan.baidu.com/s/1tmBP7RHVX62FdAigpcV0Lg
提取码:6666

我在服务器这边创建了一个目录,然后上传了这个tar包
在这里插入图片描述
要的小伙伴自取。

之后我们加载一下镜像。

为了测试,我们先做单节点部署,看看行不行。

安装ES

我们先运行一下我们的docker

systemctl start docker

然后切换到 es.tar 的目录,我的目录是 /elastic

然后加载镜像

 docker load -i es.tar 

之后我们创建一个容器:

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称

  • -e "http.host=0.0.0.0":监听的地址,可以外网访问

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小

  • -e "discovery.type=single-node":非集群模式

  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录

  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录

  • --privileged:授予逻辑卷访问权

  • --network es-net :加入一个名为es-net的网络中

  • -p 9200:9200:端口映射配置

验证安装

之后打开你的 IP:9200 端口
在这里插入图片描述

访问正常

安装kibana

这个是咱们联调elastic用的。

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1

运行这个命令会自动帮助我们安装。

  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

可以看到有两个了
在这里插入图片描述
之后在浏览器打开 5601端口

由于一个DevTool
在这里插入图片描述

设置密码

之后的话,我们需要去设置密码,因为,现在是已经可以正常运行了,但是,没有设置密码,那么就意味,任何人都可以访问,那么这样做显然是不太OK的。(这里的话,为了安全,建议再做一个端口映射,如果需要公开暴露的话)

那么这里设置密码的话也是分别设置es的和kibabana的。这里不太一样的就是,我们需要去容器里面去修改配置。

进入es容器

首先我们需要找到,我们的容器。

docker container ls

在这里插入图片描述
当然如果你的容器没有在线运行,那么就是

docker ps -a

查看所有的 容器。

然后我们需要进入到容器里面

docker exec -it 容器ID /bin/bash

安装Vim

我们待会需要去修改配置文件,但是对于这个原始镜像来说,是没有vim,同时yum也无法正常使用。因此,我们需要麻烦一点去安装。

这里的话按照顺序输入如下指令即可:

cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

yum makecache
yum update -y
yum -y install vim

那么这个时候的话,我们的vim就是安装好了。

修改es容器配置文件

之后的话,我们就可以正常使用vim去修改我们的配置文件了。

那么此时进入到我们的config目录

cd config

在这里插入图片描述
然后我们编辑
elasticsearch.yml配置文件
然后添加如下命令:

xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "Authorization"

在这里插入图片描述

之后退出容器,重启

docker restart 容器ID

设置es访问密码

此时你再次刷新刚刚9200的那个端口应该是会提示你要密码登录的,但是还没完,我们此时再次进入到我们的容器,然后进入bin目录,输入如下指令:

elasticsearch-setup-passwords interactive

然后会让你设置各种密码,你可以选择统一,随便你。
在这里插入图片描述
之后再次访问:
在这里插入图片描述
我们输入密码即可。用户名为 elastic

设置Kibana密码

理想状态

首先通过同样的方式,我们进入到Kibana的容器当中。
在这里插入图片描述
然后就好办了嘛,
在这里插入图片描述
然后修改Kibana的配置文件
同样的没有vim需要再来一下。之后我们在编辑这个文件然后添加:

elasticsearch.username: "elastic"
elasticsearch.password: "xxxx"

即可,但是遗憾的是,通过我们刚刚安装的docker 容器来说,你也看到了,当前用户并不是root,实际上是kibana,这个就比较蛋疼了,不过条条大路通罗马,实际上,我们还有另一个方案。

方案二修改挂载

本来是打算去挣扎一下,去看看人家官方是咋说的,突然想到,刚刚我们应该是有挂载我的配置文件的。所以,我就直接修改本地文件其实就可以了。是的修改es的时候其实也可以这样干,如果不是因为vim问题的话,这种方式是更慢的。为啥呢,原因在这儿:

首先我们先找到挂载,由于我也不知道在哪,所以我们找一下位置:

find / -name  kibana.yml

最后我们找到有这几个东西:
在这里插入图片描述

这个是我们挂载的,其实到底是哪一个我也不确定,于是我就全部看了一下,最后,我对这两个文件进行了修改。
在这里插入图片描述
第一个文件是一堆注释,第四个文件当我把前面的改好了,这个也就改好了,可能是个链接吧。

之后的话加入刚刚的那两句话:

elasticsearch.username: "elastic"
elasticsearch.password: "xxxx"

在这里插入图片描述

安装IK分词器

OK,最后的话,就是来安装一下我们的分词器,就是我们的 KunKun分词器主要是因为中文分词嘛。其实作用和jieba类似嘛,要做关键词搜索呗。

安装ik分词器

安装的话两种方案:

在线安装

这个比较慢。

执行如下指令就好了:

# 进入容器内部
docker exec -it containerName /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit
#重启容器
docker restart elasticsearch

离线安装

那么我们这边选择离线安装,所以先到ik官网,去搞到压缩包。

我们可以在docke看到有两个数据卷正在被使用。
在这里插入图片描述

并且可以看到具体信息
在这里插入图片描述

然后的话我们直接进入那个目录,然后上传ik分词器。

在这里插入图片描述

然后重启容器。

docker restart  容器ID/名

最后我们来到Kibana来看看我们的分词效果。
在这里插入图片描述
效果非常不错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC | SSM整合(SpringMVC+Spring+MyBatis)

0️⃣概述👾SSM与三层架构对应关系SpringMVC —— 表示层(controller、view)Spring —— 业务逻辑层(service)MyBatis —— 数据访问层(dao、pojo)👾配置文件spring-config.xml ——…

vue全家桶之vuex详解

文章目录Vuex 概述1.1 组件之间共享数据的方式1.2 Vuex 是什么1.3 使用 Vuex 统一管理状态的好处什么样的数据适合存储到 Vuex 中2. Vuex 的基本使用3. Vuex 的核心概念3.1 核心概念概述3.2 State3.3 Mutation3.4 Action3.5 GetterVuex 概述 1.1 组件之间共享数据的方式 父向…

NET.前端基础

均摘自C语言中文网 网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JavaScript(简称“JS”动态脚本语言),它们三者在网页中分别承担着不同的任务。 HTML …

74. 搜索二维矩阵

74.搜索二维矩阵一、题目描述二、解题思路2.1 二分查找行2.2 二分查找列三、提交结果一、题目描述 二、解题思路 采用两次二分的方式,第一次二分用于找到target在二维矩阵中的行标,第二次二分只需要对找到的行进行二分查找即可。 2.1 二分查找行 初始…

10.3 定制操作

文章目录向算法传递函数谓词排序算法lambda表达式可调用对象介绍lambdafind_if 和 find_each的介绍lambda的捕获和返回值捕获引用捕获隐式捕获可变lambda指定lambda返回的类型函数体参数绑定标准库bind函数占位符_n具体使用bind的参数使用bind重排参数顺序绑定引用参数向算法传…

svg动画图形绘制

先介绍下绘制图形的标签 1:线段:line 2:矩形:rect 3: 圆形:circle 4:多边形:polyline(不会自动连接起点和终点) 5: 多边形:polygon (会自动连接起点和终点) v…

SAP FICO 理解统驭科目记账与特殊记账

统驭科目记账与特殊记账 【背景】 统驭科目通常分为三类:资产(A)、客户(D)和供应商(K),在创建会计科目时可在”控制数据“选项卡下进行选择。 在创建客户/供应商主数据的时候&#…

Vue插槽Slot的使用

1、认识插槽Slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示;但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些…

【零基础】学python数据结构与算法笔记15-欧几里得、RSA

文章目录前言95.欧几里得算法96.RSA算法介绍97.RSA算法测试98.算法课程总结总结前言 学习python数据结构与算法,学习常用的算法, b站学习链接 95.欧几里得算法 求最大公约数 欧几里得算法:gcd(a,b) gcd(b,a mod b) #mod取余 例&#xff1a…

04.自定义类型:结构体

1 结构体的声明 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明 struct tag { member-list;//成员列表 }variable-list;//变量列表 EG: 描述一位学生: struct Stu {char name[…

Comparable+Comparator+Cloneable接口

文章目录ComparableComparatorCloneable浅拷贝深拷贝Comparable 当我们需要对一个自己写的类进行排序(Collections.sort和Arrays.sort)的时候,,就要使用到Comparable接口。 该接口中有一个compareTo方法,该方法其实就是一比较规则。 public interface…

货币银行学

建立大脑知识库 外汇储备不宜太高,2022年是3万亿。 美元贬值,大宗商品会更贵。 大宗商品 [1] (Commodities)是指可进入流通领域,但非零售环节,具有商品属性并用于工农业生产与消费使用的大批量买卖的物质商…

Oracle Id生成算法 —— 雪花算法

背景 近几日,被主键ID生成折磨的不太行,于是就在寻找一种合适的主键生成策略,选择一种合适的主键生成策略,可以大大降低主键ID的维护成本。 主键ID生成方法 最常用的4种主键ID生成方法 UUID:全局唯一性&#xff0c…

【框架】Spring

1、IOC 1、自动化配置 xml文件 注册bean 属性注入:setter,构造方法,p命名空间,外部注入 复杂属性:对象ref,数组array,list,map 依赖注入:ctx.getBean()Java配置类 Conf…

InterruptedException异常解析

Either re-interrupt this method or rethrow the “InterruptedException”. 请重新中断此方法或重新引发“InterruptedException”。 文章目录问题描述问题解析sonar检测提示规则解决方案问题描述 public void run () {try {while (true) {// do stuff}}catch (InterruptedE…

webgl变换矩阵理论详解

文章目录前言矩阵运算矩阵加减矩阵数乘矩阵乘矩阵矩阵转置逆矩阵正交矩阵矩阵变换的一般规则行主序和列主序行向量和列向量复杂变换时的顺序变换矩阵进行图形变换uniform传递矩阵平移缩放旋转组合变换实例总结前言 在webgl中将图形进行平移、旋转、缩放等操作时可以在着色器中…

11.1 使用关联容器

文章目录关联容器的类型使用map使用set关联容器中元素是按关键字保存和访问的,支持高效关键字查找和访问。顺序容器中元素是按他们在容器中的位置保存访问的。关联容器有两个主要类型:set和map。 set:每个元素包含一个关键字,想知…

OPC实践:通过 python-docx 读取 docx 文档

概述 本文记录下列命令执行的过程,通过对过程中的关键步骤进行记录,掌握 python-docx 库中 opc 与 parts 模块的源码、以及加深对 OPC 的理解。 import docx# fp 为 docx 文件路径, docx 包含一个 hello 字符串、一张 jepg 图片及一个表格…

<Python的列表和元组>——《Python》

目录 1.列表 1.1 列表的概念 1.2 创建列表 1.3 访问下标 1.4 切片操作 1.5 遍历列表元素 1.6 新增元素 1.7 查找元素 1.8 删除元素 1.9 连接列表 2. 元组 1.列表 1.1 列表的概念 编程中, 经常需要使用变量, 来保存/表示数据. 如果代码中需要表示的数据个数比较少,…

初识 Bootstrap(前端开发框架)

初识 Bootstrap(前端开发框架)参考Bootstrap特点获取目录结构jQuery 与 Popper准备工作包含 jQuery 与 Poppermetabox-sizing基本模板无注释版本注释版本参考 项目描述Bootstrap 官方教程https://getbootstrap.net/docs/getting-started/introduction/百…