ElasticSearch Docker 部署实例

news/2023/6/8 0:39:39

文章目录

  • 前言
  • 基本环境构建
    • 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.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum 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.exyb.cn/news/show-4574431.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

【每日进步一点点】C语言刷题技巧及训练1

恭喜你发现宝藏,这里是刹那芳间,很高兴为您服务~ C语言编程题 相信很多同学学校的C语言考试是上机做编程题叭,不要慌,这里将带你进行一个初步的入门,进行一些简单的编程题练习。 Anyway, 请一定要去多多实践&#xff…

攻防世界的一点点题

web进阶区 1.baby_web(想想初始页面是哪个) 初始页面:想到index.php 在地址栏处输入index.php,但是仍然返回的是1.php,,然后尝试用burp拦截 使用repeater模块 将1.php改为index.php ,得flag MISC新手区 1.pdf:给了一张pdf图片,说图下面什么都没有 哎&#xf…

shell脚本输出颜色

写shell脚本时,用echo命令输出内容,这我们都知道。但是怎么给输出内容上点色呢? 其实很简单,利用-e参数,即启用反斜杠转义的解释。 echo 对下列反斜杠字符进行转义: \a 警告(响铃) \b 退…

【宇麦科技】如何实现无密码登录?群晖Secure SignIn设置全解析

恶意攻击 蠕虫病毒 …… 安全隐患层出不穷 这些安全事件的背后 弱口令是黑客攻击常用的手段之一 利用弱密码,入侵系统并植入病毒 对于弱口令,如何兼顾便捷登录又能无惧泄露? 群晖 DSM 7.0 中推出了用于验证登录的 Synology Secure S…

如何随意复制网页上的文字

1.有些文章文字在某度上复制粘贴需要开通vip,这里教大家一个很简单的方法! 2在网页中直接 按住 Ctrl P 键 可调式出打印界面,选中需要打印的文字,可直接复制

最强解决网页复制文字等问题

完美解决文字无法复制问题 0.刚开始无法复制文字,右击复制需要登录,或者要vip 解决方法 1.在浏览器界面按FnF12调出页面源码控制台 2.点击设置 3.找到javascipt选项并打勾(禁用它) 4.别关闭这个设置界面,在要复制的页面可以完美得复制…

html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制

大家在上网的时候是否曾经遇到过网页文字无法复制的情况呢?为什么网页文字无法复制呢?或者问如何把不能复制的网页文字复制下来呢?其实,网页文字不能复制原因大部分是网页的制作者为了防止网页内容被被人盗用而设置了复制限制&…

复制网页上的文字

解决方法 第一步:按F12后,在页面的左边点击设置,如下图红色箭头所指。 第二步:勾选禁用JavaScript。 注意:然后就可以复制想要的文字了,不要关闭F12打开的页面,否则那个禁用JavaScript选项会…