Docker部署ElasticSearch7.11.1并挂载+配置X-Pack设置帐号密码+Kibana7.11.1+IK插件
一、ElasticSearch是什么
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎,可以扩展到上百台服务器,处理PB级结构化或非结构化数据
二、Docker 部署 ElasticSearch
- 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.11.1
- 运行容器
ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口,就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es。
这里有一点要注意,需要修改-e ES_JAVA_OPTS配置JVM参数 Xmx 最大堆大小和 -Xms 最小堆大小,防止启动占用内存过大默认2g而出现的服务闪退
这里一般会占用9200和9300两个端口:
9200作为Http协议,主要用于外部通讯
9300作为Tcp协议,jar之间就是通过tcp协议通讯
ES集群之间是通过9300进行通讯
- 创建挂载目录
我创建在/mnt下,这个自己选择,然后对目录进行授权
创建的目录:
授权:不然挂载的时候会因为权限不足导致服务无法启动
启动命令:
docker run -d --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300 -v /mnt/elasticsearch/data:/usr/share/elasticsearch/data -v /mnt/elasticsearch/plugins:/usr/share/elasticsearch/plugins -v /mnt/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" docker.io/elasticsearch:7.11.1
elasticsearch.yml:
cluster.name: elasticsearch-cluster
# 节点名称
node.name: elasticsearch-node1
# # 绑定host,0.0.0.0代表当前节点的ip
network.host: 0.0.0.0
# # 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址(本机ip),因为我使用的是docker启动,不是简单127.0.0.1,要查看具体分配的ip
network.publish_host: 172.18.0.2
# # 设置对外服务的http端口,默认为9200
http.port: 9200
# # 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
# # 是否支持跨域,默认为false
http.cors.enabled: true
# # 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.allow-origin: "*"
# # 表示这个节点是否可以充当主节点
node.master: true
# # 是否充当数据节点
node.data: true
# # 所有主从节点ip:port
discovery.seed_hosts: ["172.18.0.2:9300"]
# # 这个参数决定了在选主过程中需要 有多少个节点通信 预防脑裂
discovery.zen.minimum_master_nodes: 1
# 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Lengt
http.cors.allow-headers: Authorization
# 这条配置表示开启xpack认证机制,使用密码登录
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
- 重启容器
由于修改了配置,因此需要重启ElasticSearch容器。
docker restart es
访问9200端口,如下服务便启动成功
三、配置X-Pack设置es用户密码
为什么要配置X-Pack,外网裸奔这么刺激容易被攻击。正式环境建议内网访问、内网访问、内网访问
打开 elasticsearch.yml文件
vim /mnt/elasticsearch/elasticsearch.yml
在最后增加如下参数
# 跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Lengt
http.cors.allow-headers: Authorization
# 这条配置表示开启xpack认证机制
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
接着在容器在容器中,来到
/usr/share/elasticsearch/bin
执行
./elasticsearch-setup-passwords interactive
进行各种密码的配置
重启服务,访问如下便成功:
四、docker安装kibana
kibana主要是用来编辑请求语句的,方便学习操作es的语法,虽然使用curl也可以,但是总感觉不是很直观和方便。有时在进行编写程序,`写查询语句时,可以使用kibana进行书写,然后再粘贴到程序中。同时使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据
- 安装的时候一定要注意,kibana的版本一定要和elasticsearch匹配,我这里都是7.11.1版本
docker pull kibana:7.11.1
- 创建如下目录,并授权,用于挂载
授权
kibana.yml
server.name: kibana
# kibana的主机地址 0.0.0.0可表示监听所有IP
server.host: "0.0.0.0"
# kibana访问es的URL
elasticsearch.hosts: [ "http://172.18.0.2:9200" ]
#这里是在elasticsearch设置密码时的值
elasticsearch.username: 'elastic'
elasticsearch.password: '**************'
# # 显示登陆页面
xpack.monitoring.ui.container.elasticsearch.enabled: true
# # 语言
i18n.locale: "zh-CN"
启动:
docker run -d -it --restart=always --privileged=true --name=kibana -p 5601:5601 -v/mnt/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.io/kibana:7.11.1
访问5601端口,如下便成功
五、Docker 部署 ElasticSearch-Head
ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作。类似于使用navicat工具连接MySQL这种关系型数据库,对数据库做操作。head同时也是集群管理工具。
- 拉取镜像
docker pull mobz/elasticsearch-head:5
- 运行容器
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
展示如下:
上图为概览页面效果,简单说明下以上5个画了红框的地方
- 集群健康值。Elasticsearch 中其实有专门的衡量索引健康状况的标志,分为三个等级:
- green,绿色。这代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
- yellow,黄色。所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把yellow 想象成一个需要及时调查的警告。
- red,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。 如果只有一台主机的话,其实索引的健康状况也是yellow,所有上图显示为yellow。因为一台主机,集群没有其他的主机可以防止副本,所以说,这就是一个不健康的状态,因此集群也是十分有必要的。
表示在Elasticsearch已经创建的索引(index)。包含了索引的名称、索引的大小(size)、索引的数据量(docs),并且通过【信息】和【动作】可以查看索引信息或者给索引建别名。
表示Elasticsearch节点。上图中的带有感叹号的Unassigned表示未分配的节点,带有星号的表示是主节点,其节点名称叫:Hu9Suoy,并能查看节点信息。
表示索引分片,Elasticsearch数据就存储在这些分片中。
查看Elasticsearch相关的信息和刷新head插件。
这样,我们就完成了用Docker提供Elasticsearch服务,而不污染宿主机环境了,这样还有一个好处,如果想同时启动多个不同版本的Elastcsearch或者其他服务,Docker也是一个理想的解决方案。
六、安装IK分词器
默认的分词器对中文并不友好,因此我们需要自己安装一个对中文友好的IK分词器,github链接,一定要注意,elasticsearch的版本一定要与ik的版本匹配。我的elasticsearch版本是7.11.1,那么对应的ik版本也是7.11.1.
进入运行elascticsearch的docker容器,来到/usr/share/elasticsearch/bin
目录下:运行
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.11.1/elasticsearch-analysis-ik-7.11.1.zip
便自己安装上ik分词器了,然后重启es
参考文章
关于ik的测试及遇到的问题,参考我另一篇文章
Docker部署ElasticSearch7.11.1并挂载+配置X-Pack设置帐号密码+Kibana7.11.1+IK插件相关推荐
- docker部署nginx 并实现反向代理 配置多个域名多个端口
文章目录 docker部署nginx 并实现反向代理 配置多个域名多个端口 1. 安装nginx: 2. 以终端的方式打开镜像容器 default.conf: nginx.conf: 3. 在linu ...
- SRS视频服务器-docker部署srs4.0.198-ubuntu系统:配置低时延实现srt推流和拉流
一.docker安装srs4.0.198 推荐使用docker来安装srs视频服务器,简单方便 我使用的是ubuntu18.04系统. 1.1.docker的安装 我参考的是:https://blog ...
- Apache Ftp Server 部署,它的帐号密码加密算法是什么呢?
背景 本文介绍 Apache Ftp Server 应用的部署过程及 Java 操作 FTP.SFTP 的流程,主要用于有操作 FTP.SFTP 的业务场景. SFTP 环境容易得到,凡事 Linux ...
- windows server2012安全配置—停用Guest帐号的方法
我按照度娘的方法停用Guest帐号:鼠标右击左下角的图标,在弹出快捷菜单选择"计算机管理"→"系统工具"→"本地用户和组",找不到" ...
- docker 部署 kong konga postgresql 以及konga配置
Kong 官方文档:Install Kong Gateway on Docker - v2.7.x | Kong Docshttps://docs.konghq.com/gateway/2.7.x/i ...
- 群晖docker部署带web容器的端口配置
文章目录 方法一: 方法二(推荐) 方法一: 容器端口 :按照你装的docker项目要求填 说明书有,不能更改 本地端口:可以自定义,找个没被用过的端口填就行 到这里就已经可以 添加完后就可以通过&q ...
- 开源J2EE项目Zheng环境Docker部署
摘要:开源项目Zheng的部署环境十分复杂,虽然官方提到只需要10分钟就可以完成部署,但是涉及到多达6种依赖服务的安装和配置,十分繁琐.所以本文将使用docker对该项目的环境进行配置.目前第一部是将 ...
- CentOS下利用Docker部署Surging
CentOS下利用Docker部署Surging 原文:CentOS下利用Docker部署Surging 1. 安装Centos, 配置固定ip 配置文件地址vi /etc/sysconfig/net ...
- zabbix报警系统docker部署,k8s部署,基本使用方法
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官方地址 官方写的很详细并且是中文的,一步步按照操作就可以 https://www.zabbix.com/documentation/current/ ...
最新文章
- is not a supported wheel on this platform pip安装报错
- oracle查询表占用空,查询dba_tables 为啥有的表的表空间为空
- filter---用angularjs实现关键字高亮
- c++ 字符串数组长度排序_C指针和字符串数组
- boost::range模块实现map_values相关的测试程序
- 计算机类产品评价技术指标体系研究之图形(像)篇
- 什么样的程序员会让人讨厌?大家注意,千万不要成为这种程序员!
- 通过Grafana访问Mysql/MariaDB -- Web端数据库管理、分析、可视化工具
- java编程贪心算法背包问题,贪心算法----部分背包问题(java实现)
- 2021年中国动态内容交付市场趋势报告、技术动态创新及2027年市场预测
- 【软件测试】《软件测试技术基础》知识点整理
- Atitit topic index Abt 150 toic [原]Atitit hi dev eff topic by use dsl sql coll op 提升开发效率sql ds
- 北科大学计算机考研难度,2019二本考上北科计算机专硕经验分享
- 好看的字体:华康流风体
- 2.Raspberrypi 3:树莓派开发板入门
- 我在汇才的亲身经历与感受
- 信息安全技术——(五)信息隐藏技术
- 数据库之区分DB\DBMS\DBS
- 怎么看股票走势图(转贴)
- Vic-软件测试-开始软件测试