一、ElasticSearch是什么

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎,可以扩展到上百台服务器,处理PB级结构化或非结构化数据

二、Docker 部署 ElasticSearch

  1. 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.11.1
  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进行通讯

  1. 创建挂载目录
    我创建在/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
  1. 重启容器

由于修改了配置,因此需要重启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能执行高级的数据分析,并能以图表、表格和地图的形式查看数据

  1. 安装的时候一定要注意,kibana的版本一定要和elasticsearch匹配,我这里都是7.11.1版本
docker pull kibana:7.11.1
  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个画了红框的地方

  1. 集群健康值。Elasticsearch 中其实有专门的衡量索引健康状况的标志,分为三个等级:
  • green,绿色。这代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
  • yellow,黄色。所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把yellow 想象成一个需要及时调查的警告。
  • red,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。 如果只有一台主机的话,其实索引的健康状况也是yellow,所有上图显示为yellow。因为一台主机,集群没有其他的主机可以防止副本,所以说,这就是一个不健康的状态,因此集群也是十分有必要的。
  1. 表示在Elasticsearch已经创建的索引(index)。包含了索引的名称、索引的大小(size)、索引的数据量(docs),并且通过【信息】和【动作】可以查看索引信息或者给索引建别名。

  2. 表示Elasticsearch节点。上图中的带有感叹号的Unassigned表示未分配的节点,带有星号的表示是主节点,其节点名称叫:Hu9Suoy,并能查看节点信息。

  3. 表示索引分片,Elasticsearch数据就存储在这些分片中。

  4. 查看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插件相关推荐

  1. docker部署nginx 并实现反向代理 配置多个域名多个端口

    文章目录 docker部署nginx 并实现反向代理 配置多个域名多个端口 1. 安装nginx: 2. 以终端的方式打开镜像容器 default.conf: nginx.conf: 3. 在linu ...

  2. SRS视频服务器-docker部署srs4.0.198-ubuntu系统:配置低时延实现srt推流和拉流

    一.docker安装srs4.0.198 推荐使用docker来安装srs视频服务器,简单方便 我使用的是ubuntu18.04系统. 1.1.docker的安装 我参考的是:https://blog ...

  3. Apache Ftp Server 部署,它的帐号密码加密算法是什么呢?

    背景 本文介绍 Apache Ftp Server 应用的部署过程及 Java 操作 FTP.SFTP 的流程,主要用于有操作 FTP.SFTP 的业务场景. SFTP 环境容易得到,凡事 Linux ...

  4. windows server2012安全配置—停用Guest帐号的方法

    我按照度娘的方法停用Guest帐号:鼠标右击左下角的图标,在弹出快捷菜单选择"计算机管理"→"系统工具"→"本地用户和组",找不到" ...

  5. docker 部署 kong konga postgresql 以及konga配置

    Kong 官方文档:Install Kong Gateway on Docker - v2.7.x | Kong Docshttps://docs.konghq.com/gateway/2.7.x/i ...

  6. 群晖docker部署带web容器的端口配置

    文章目录 方法一: 方法二(推荐) 方法一: 容器端口 :按照你装的docker项目要求填 说明书有,不能更改 本地端口:可以自定义,找个没被用过的端口填就行 到这里就已经可以 添加完后就可以通过&q ...

  7. 开源J2EE项目Zheng环境Docker部署

    摘要:开源项目Zheng的部署环境十分复杂,虽然官方提到只需要10分钟就可以完成部署,但是涉及到多达6种依赖服务的安装和配置,十分繁琐.所以本文将使用docker对该项目的环境进行配置.目前第一部是将 ...

  8. CentOS下利用Docker部署Surging

    CentOS下利用Docker部署Surging 原文:CentOS下利用Docker部署Surging 1. 安装Centos, 配置固定ip 配置文件地址vi /etc/sysconfig/net ...

  9. zabbix报警系统docker部署,k8s部署,基本使用方法

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官方地址 官方写的很详细并且是中文的,一步步按照操作就可以 https://www.zabbix.com/documentation/current/ ...

最新文章

  1. is not a supported wheel on this platform pip安装报错
  2. oracle查询表占用空,查询dba_tables 为啥有的表的表空间为空
  3. filter---用angularjs实现关键字高亮
  4. c++ 字符串数组长度排序_C指针和字符串数组
  5. boost::range模块实现map_values相关的测试程序
  6. 计算机类产品评价技术指标体系研究之图形(像)篇
  7. 什么样的程序员会让人讨厌?大家注意,千万不要成为这种程序员!
  8. 通过Grafana访问Mysql/MariaDB -- Web端数据库管理、分析、可视化工具
  9. java编程贪心算法背包问题,贪心算法----部分背包问题(java实现)
  10. 2021年中国动态内容交付市场趋势报告、技术动态创新及2027年市场预测
  11. 【软件测试】《软件测试技术基础》知识点整理
  12. Atitit topic index Abt 150 toic [原]Atitit hi dev eff topic by use dsl sql coll op 提升开发效率sql ds
  13. 北科大学计算机考研难度,2019二本考上北科计算机专硕经验分享
  14. 好看的字体:华康流风体
  15. 2.Raspberrypi 3:树莓派开发板入门
  16. 我在汇才的亲身经历与感受
  17. 信息安全技术——(五)信息隐藏技术
  18. 数据库之区分DB\DBMS\DBS
  19. 怎么看股票走势图(转贴)
  20. Vic-软件测试-开始软件测试

热门文章

  1. 使用Hyper-V安装Ubuntu16.04 Server 网络配置
  2. Oracle 优化相关
  3. HibernateBaseDAO
  4. 【bzoj2223】[Coci 2009]PATULJCI 主席树
  5. C#笔记(二):委托与事件
  6. 企业家Scott Gerber:小公司应用开发的十条建议
  7. HDOJ 2176 取石子游戏
  8. 获得主机域名及其IP和Port端口
  9. 建立稳定安全的SSH隧道
  10. Canny边缘检测算法